微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
    }
}

原文地址:https://www.jb51.cc/csharp/243662.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐