小编典典

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

sql

如何将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
}

阅读 161

收藏
2021-04-22

共1个答案

小编典典

在“从SQL Books Online映射CLR参数数据”中,列出了“对象”作为用于映射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());

    }
};

然后,我修改了test.sql文件以执行此存储的proc:

DECLARE @thing sql_variant = 'hahahahaha';

EXEC dbo.StoredProcedure1 @thing

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

哈哈哈哈哈

没有受影响的行。

(返回0行)

完成运行sp_executesql。

2021-04-22