如何为SQL CLR存储过程提供sql_variant参数?

Bur*_*urg 5 c# sql sql-server stored-procedures sqlclr

如何将sql_variant参数添加到SQL CLR存储过程?使用System.Object不起作用,我没有看到任何可以使用的属性.

[Microsoft.SqlServer.Server.SqlProcedure]
public static void ClearOnePartition(
    SqlString aString
    , /* I want this to be a sql_variant */ object aVariant
)
{
    //do stuff here
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*ner 3

在从 SQL 联机丛书映射 CLR 参数数据中, Object被列为用于映射sql_variant 的正确类型。

我创建了一个简单的 SQL Server 项目并向其中添加了以下类:

public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void StoredProcedure1(object param1)
    {
        // Put your code here
        //Trace.Write(param1);
        SqlContext.Pipe.Send(param1.ToString());

    }
};
Run Code Online (Sandbox Code Playgroud)

然后我修改了 test.sql 文件来执行这个存储过程:

DECLARE @thing sql_variant = 'hahahahaha';

EXEC dbo.StoredProcedure1 @thing
Run Code Online (Sandbox Code Playgroud)

这将按预期运行并产生以下输出:

哈哈哈哈哈

没有行受到影响。

(返回 0 行)

sp_executesql 运行完毕。