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

Lis*_*isa 6 t-sql sql-server

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

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
Run Code Online (Sandbox Code Playgroud)

错误

消息102,级别15,状态1,过程rnd_STR,第6行

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

消息137,级别15,状态1,过程rnd_STR,第8行

必须声明标量变量"@alphaVar".

Msg 2812,Level 16,State 62,Line 4

找不到存储过程'rnd_STR'.

(1排受影响)

没用!!

我怎么称呼它?

顺便说一下,返回的@ID是一个字符串

Mar*_*ith 15

你说的@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
Run Code Online (Sandbox Code Playgroud)

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


RB.*_*RB. 9

你在调用语法是错误的.

 DECLARE @newId int
 EXEC @newId = rnd_STR, @length = 10
Run Code Online (Sandbox Code Playgroud)

请参阅参考中的EXECUTE.