c# – 类型与创建CLR存储过程不匹配

前端之家收集整理的这篇文章主要介绍了c# – 类型与创建CLR存储过程不匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在程序集中有一个方法,如下所示:
namespace MyNameSpace
{
  public class MyClass
  {
    [Microsoft.sqlServer.Server.sqlProcedure]
    public static void MyMethod(sqlChars myMessage)
    {
       // Stuff here 
    } 
  }
}

我将其编译为一个DLL并将其加载到我的sql Server中,如下所示:

drop assembly MyAssembly
create assembly MyAssemblyfrom 'C:\Scripts\MyAssembly.dll'

一切正常.

但现在我尝试运行这个:

CREATE PROCEDURE MySproc @message nvarchar(max)
AS EXTERNAL NAME MyAssembly.[MyNameSpace.MyClass].MyMethod

当我运行时,我收到此错误

CREATE PROCEDURE for “MySproc ” Failed because T-sql and CLR types for parameter “@myMessage” do not match.

我有什么想法可以解决这个问题?

我也试过这些方法签名:

> public static void MyMethod(string myMessage)
> public static void MyMethod([sqlFacet(MaxSize = -1)] string myMessage)

解决方法

sql类型nvarchar映射到CLR(.Net)类型sqlString:
public static void MyMethod(sqlString myMessage)
{
    if (! myMessage.IsNull) 
    {
        String myMessageString = myMessage.ToString();
        // Do stuff
    }
}

猜你在找的C#相关文章