Jer*_*ose 3 sql sql-server stored-procedures
我知道从存储过程返回标量值的首选方法是使用RETURN或OUTPUT参数.但是,假设我有一个存储过程,它使用select语句返回值:
CREATE PROC spReturnNumber AS
SELECT 1
Run Code Online (Sandbox Code Playgroud)
是否有可能从另一个存储过程中获取此值?
CREATE PROC spCheckNumber AS
EXEC spReturnNumber -- <-- get the return value here?
Run Code Online (Sandbox Code Playgroud)
澄清:我需要一个不需要使用OUTPUT参数或使用RETURN返回值的解决方案.
提前致谢.
您可以使用insert-exec将存储过程的结果存储在表中:
declare @t table (col1 int)
insert @t exec spReturnNumber
return (select col1 from @t)
Run Code Online (Sandbox Code Playgroud)
表的定义必须与存储过程的结果集匹配.
使用OUTPUT参数代替(或补充,如果其他应用程序使用此过程)SELECT.
ALTER PROCEDURE dbo.spReturnNumber
@Number INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET @Number = 1;
SELECT @Number;
END
GO
CREATE PROCEDURE dbo.spCheckNumber
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Number INT;
EXEC dbo.spReturnNumber @Number = @Number;
SELECT @Number;
END
GO
Run Code Online (Sandbox Code Playgroud)
如果您无法更改原始过程,但您知道其输出将保持静态,则可以使用#temp 表。
CREATE PROCEDURE dbo.spCheckNumber
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #n(i INT);
INSERT #n(i) EXEC dbo.spReturnNumber;
DECLARE @Number INT;
SELECT @Number = i FROM #n;
END
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19760 次 |
| 最近记录: |