首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLCLR存储过程安装失败

SQLCLR存储过程安装失败
EN

Stack Overflow用户
提问于 2018-05-22 15:02:54
回答 2查看 117关注 0票数 0

我已经在Visual (VS)中创建了一个存储过程。在成功创建程序集后尝试安装该过程时,将得到以下错误:

sp_GetDistanceAndTime的创建过程失败,因为参数"@Profile“的types和CLR类型不匹配。

我该如何安装这个?我的参数不对吗?

C#代码:

代码语言:javascript
复制
public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void SqlStoredProcedure1(SqlString Profile, SqlString StartPosition,
           SqlString Destination)
    {
        try
        {           
            SqlPipe sqlPipe = SqlContext.Pipe;
            string result;
            result = PTVRequest.InvokeService(Profile.ToString(),
                    StartPosition.ToString(), Destination.ToString());

            SqlContext.Pipe.Send(result);
        }
        catch (Exception ex)
        {
            SqlContext.Pipe.Send(ex.Message);
        }

    }
}

SQL代码:

代码语言:javascript
复制
Create Procedure sp_GetDistanceAndTime(@Profile text, @StartPosition text,
 @Destination text)
AS 
External NAME GetPvt.StoredProcedures.SqlStoredProcedure1
go
EN

回答 2

Stack Overflow用户

发布于 2018-05-25 15:44:16

  1. 不要使用TEXTNTEXTIMAGE数据类型。这些已经被废弃了13年,从Server 2005的发行版开始,它引入了MAX数据类型来替换那些旧的blob类型。
  2. SQLCLR只处理Unicode字符串(UTF-16 The ),而不处理8位编码。因此,您不能使用CHAR(1 - 8000)VARCHAR(1 - 8000)VARCHAR(MAX)。我觉得它也不喜欢NCHAR。您的选择是:NCHAR(1 - 4000)NVARCHAR(MAX)。这两个映射都指向SqlStringSqlChars
  3. SqlContext.Pipe.Send(string)相当于在T中使用PRINT .它只是显示在SSMS中的"Messages“选项卡中的一条消息。它既不是返回值,也不是OUTPUT参数。
票数 0
EN

Stack Overflow用户

发布于 2018-05-25 16:23:58

一个快速示例(为您的情况修复大小等):

代码语言:javascript
复制
public static void SqlStoredProcedure1([SqlFacet(MaxSize=100)] string Profile,
[SqlFacet(MaxSize=200)] string StartPosition,
[SqlFacet(MaxSize=100)] string Destination)

和:

代码语言:javascript
复制
CREATE PROCEDURE sp_GetDistanceAndTime
   @Profile nVARCHAR(100), @StartPosition nVARCHAR(200), @Destination nVARCHAR(100)
   AS EXTERNAL NAME GetPvt.StoredProcedures.SqlStoredProcedure1

详情请参见映射CLR参数数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50470930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档