我有一个以SELECT结尾并返回记录集的存储过程。我可以像这样在另一个存储过程中调用它:
EXEC procedure @param
如何获取返回的记录集?谢谢
我有一个以SELECT结尾并返回记录集的存储过程。我可以像这样在另一个存储过程中调用它:
EXEC procedure @param
如何获取返回的记录集?谢谢
CREATE FUNCTION [dbo].[fn_GetSubordinates] (
@sPersonID VARCHAR(10),
@nLevels INT
)
RETURNS @tblSubordinates TABLE
(
Person_Id VARCHAR(10),
Surname char(25),
Firstname char(25)
)
AS
BEGIN
...
CREATE PROCEDURE sp_HelloWorld @MyReturnValue int OUT
AS
SELECT @MyReturnValue = 100
Return @MyReturnValue
DECLARE @TestReturnVal int
EXEC sp_HelloWorld @TestReturnVal output
SELECT @TestReturnVal
有趣的是,如果EXEC
执行的存储过程中只有一个简单的SELECT
(带有SET NOCOUNT ON
),那么它似乎可以正常工作,但是一旦添加任何其他的T-SQL语句(IF
、DECLARE
等),就会得到一个空行集。我可以证实这在Microsoft SQL Server 2019 (RTM-CU19) (KB5023049) - 15.0.4298.1 (X64)(在Linux容器中运行)中是这样的。
然而,最一致的方法是为您想要从中SELECT
的最终结果声明一个VIEW
,并从该VIEW
中SELECT
。