如何调用存储过程并返回值?

时间:2010-12-29 23:34:04

标签: sql-server tsql

嘿所有, 我有一个存储过程,我需要在另一个存储过程中调用它,但我希望第一个返回一个值(字段值)。

CREATE PROCEDURE rnd_STR
(
    @Length int

)

@alphaVar varchar(10) OUTPUT
AS
SET @alphaVar = 'blah'

 #procedure body
END
GO

DECLARE @alphaVar varchar(10)

EXEC rnd_STR @alphaVar output

SELECT @alphaVar

错误

Msg 102,Level 15,State 1,Procedure rnd_STR,Line 6

'@alphaVar'附近的语法不正确。

Msg 137,Level 15,State 1,Procedure rnd_STR,Line 8

必须声明标量变量“@alphaVar”。

Ms Ms 2812,Level 16,State 62,Line 4

无法找到存储过程'rnd_STR'。

(1行受影响)

没用!!

我怎么称呼它?

BTW,返回的@ID是一个字符串

4 个答案:

答案 0 :(得分:14)

您说@alphaVarvarchar(10)。在这种情况下,您需要使用如下的输出参数。 Return只能用于存储过程中的整数类型。

CREATE PROCEDURE rnd_STR
@Length int,
@alphaVar varchar(10) OUTPUT    
AS
BEGIN
SET @alphaVar = 'blah'
/* Rest of procedure body*/
END

GO

DECLARE @alphaVar varchar(10) 

EXEC rnd_STR 10, @alphaVar output

SELECT @alphaVar

或者,您可以使用标量UDF而不是存储过程。

答案 1 :(得分:9)

你正在调用语法错误。

 DECLARE @newId int
 EXEC @newId = rnd_STR, @length = 10

请参阅参考资料中的EXECUTE

答案 2 :(得分:0)

试试这个:

EXEC @alphaVar = rnd_STR 10

答案 3 :(得分:0)

获取此代码的一种方法是在Management Studio本身执行存储过程并复制SQL代码