代码之家  ›  专栏  ›  技术社区  ›  LeleDumbo

用户定义函数

  •  0
  • LeleDumbo  · 技术社区  · 16 年前

    我有这个用户定义的函数。

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

    但只有在 i 是只读的。为什么?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Remus Rusanu    16 年前

    如果是读写的,它也可以“工作”。

    如果“不起作用”,您的意思是该程序集不能安装在SQL中,因为它包含一个静态字段,使用静态类变量是危险的,原因在 CLR Hosted Environment :

    考虑到这些因素,我们 不鼓励使用静态变量 类的静态数据成员 在SQL Server中使用。用于 SAFE EXTERNAL_ACCESS 程序集,SQL Server 检查程序集的元数据 在 CREATE ASSEMBLY 时间和失败 创建此类程序集,如果 查找静态数据成员的使用 和变量。

    将程序集标记为不安全,表示您了解与静态变量关联的风险,SQL将接受您的程序集。