我有这个用户定义的功能。

public partial class UserDefinedFunctions
{
    static int i;
    [SqlFunction(IsDeterministic = true)]
    public static SqlSingle f()
    {
        return new SqlSingle(1.3F);
    }
};

但只有在 i 是readonly时它才有效。为什么呢?

有帮助吗?

解决方案

如果是可读写的,它也“有效”。

如果'not works'意味着程序集无法安装在SQL中,因为它包含静态字段,使用静态类变量是危险的,原因如 CLR托管环境

  

考虑到这些因素,我们   不鼓励使用静态变量   和类的静态数据成员   用于SQL Server。对于 SAFE 和    EXTERNAL_ACCESS 程序集,SQL Server   检查程序集的元数据   在 CREATE ASSEMBLY 时间并且失败了   如果是这样的话,就创造出   找到静态数据成员的使用   和变量。

将您的程序集标记为UNSAFE,以表明您了解与静态变量相关的风险,SQL将接受您的程序集。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top