我有以下基本存储过程,它返回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。
请帮助。
由于
答案 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