【问题标题】:How to return string value from the stored procedure如何从存储过程中返回字符串值
【发布时间】:2011-09-20 23:13:17
【问题描述】:
Alter procedure S_Comp(@str1 varchar(20),@r varchar(100) out)
as
declare  @str2 varchar(100)
set @str2  ='welcome to sql server. Sql server is a product of Microsoft'
if(PATINDEX('%'+@str1 +'%',@str2)>0)
    return @str1+'present in the string'
else 
    return @str1+'not present'

我正在执行上述存储过程。我收到以下错误:

消息 245,级别 16,状态 1,过程 S_Comp,第 8 行转换失败 将 varchar 值“Amruthnot present”转换为数据类型时 诠释。

请帮我解决这个问题

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    您将结果放在RETURN 值中,而不是在传递的@r 值中。

    来自MSDN

    (返回) 是返回的整数值。存储过程可以返回 调用的整数值 程序或申请。

    改变你的程序。

    ALTER procedure S_Comp(@str1 varchar(20),@r varchar(100) out) as 
    
        declare @str2 varchar(100) 
        set @str2 ='welcome to sql server. Sql server is a product of Microsoft' 
        if(PATINDEX('%'+@str1 +'%',@str2)>0) 
            SELECT @r =  @str1+' present in the string' 
        else 
            SELECT @r = @str1+' not present'
    

    调用过程

      DECLARE @r VARCHAR(100)
      EXEC S_Comp 'Test', @r OUTPUT
      SELECT @r
    

    【讨论】:

    • 当我执行上述存储过程时,我收到以下错误:消息 201,级别 16,状态 4,过程 S_Comp,第 0 行过程或函数“S_Comp”需要参数“@r”,这是未提供。
    • 如何执行程序?
    • DECLARE @r VARCHAR(100) EXEC S_Comp 'Test', @r SELECT @r 但我现在得到 Null 值
    • 我复制了上面写的代码并执行了它。但我得到了 NULL 值。
    • @Lieven... 有一个更正。你需要提到 OUT .... "EXEC S_Comp 'Test', @r out"
    【解决方案2】:

    改变你的

    return @str1+'present in the string' ;
    

    set @r = @str1+'present in the string' 
    

    【讨论】:

    • 声明@i varchar(200) exec @i = S_Comp 'sql' 选择@i
    • 声明@i varchar(200) exec S_​​Comp 'sql', @i out select @i
    【解决方案3】:

    使用 SELECT 或输出参数。 更多可以在这里找到: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=100201

    【讨论】:

    • 我已经声明了输出参数知道吗?但我无法返回字符串值。请帮帮我
    【解决方案4】:

    https://docs.microsoft.com/en-us/sql/t-sql/language-elements/return-transact-sql?view=sql-server-ver15

    是返回的整数值。存储过程可以将整数值返回给调用过程或应用程序。

    语法 语法sql

    返回[整数表达式]

    它只返回整数值。

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 2014-10-20
      • 1970-01-01
      • 2011-10-19
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      相关资源
      最近更新 更多