大家好,
我有一个存储过程,需要在另一个存储过程中调用它,但是我要第一个返回一个值(字段值)。

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

错误

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

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

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

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

消息2812,第16级,状态62,第4行

找不到存储过程“rnd_STR”。

(影响1行)

没用!

我怎么称呼它?

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

最佳答案

您说@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而不是存储过程。

关于sql-server - 如何调用存储过程并返回值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4558812/

10-12 17:05