从存储过程返回Varchar值

时间:2015-08-12 12:09:11

标签: sql procedure

我有以下基本存储过程,它返回varchar值

create proc myproc
AS
return 'SSS'

现在,当我使用以下查询调用此存储过程时

declare @ret varchAR(max)
 exec sp_executesql N'exec @ret =procc', 
N'@ret varchar(MAX) OUTPUT',@ret = @ret OUTPUT select @ret  as result

我收到错误以下错误

转换varchar值时转换失败' SSS'数据类型int。

请帮助。

由于

5 个答案:

答案 0 :(得分:3)

MS SQL Sever中的存储过程只能返回一个Integer。

您是否想要使用输出参数?

CREATE PROC [myproc]
    @output VARCHAR(3) OUTPUT
AS
    SET @output = 'SSS';
RETURN 0;

你可以这样打电话,

DECLARE @output VARCHAR(3);
EXEC [myproc] @output OUTPUT;
SELECT @output;

或者您可能更愿意返回标量结果集?

CREATE PROC [myproc]
AS
    SELECT 'SSS';
RETURN 0;

只需执行即可返回相同的内容,

EXEC [myproc];

答案 1 :(得分:1)

由于MS SQL Sever中的存储过程只能返回一个Integer,请尝试选择该值而不是返回它:

create proc myproc AS SELECT 'SSS'

答案 2 :(得分:0)

有输出参数

create proc myproc
(@value varchar(100) output)
AS
select @value='SSS'

GO

declare @ret varchAR(max)
 exec sp_executesql N'exec @ret =procc', 
N'@ret varchar(MAX) OUTPUT',@ret = @ret OUTPUT select @ret  as result

答案 3 :(得分:0)

如果要从存储过程返回值,则必须为其声明输出参数。

希望以下代码能为您提供帮助

create proc myproc
@outputvalue VARCHAR (16) output
AS
set @outputvalue='SSS'
select @outputvalue

答案 4 :(得分:0)

alter procedure GetPrueba(@a int, @b int, @Suma INT OUTPUT, @Resta int OUTPUT) as
begin
select  @Suma=@a+@b, @Resta=@a- @b
end

alter procedure getprueba2 as
begin
declare @s int, @r int
exec getprueba 2,5, @s OUTPUT, @r OUTPUT
select @s,@r
end


getprueba2