![](/img/trans.png)
[英]SELECT Column AS @ParameterName in SQL Server stored procedure
[英]Select a column returned by a stored procedure
我有一个存储过程,它返回我约50列。 我想编写一个查询,在那里我将能够从SP返回的列列表中选择一个特定的列。
我尝试select RSA_ID from exec(uspRisksEditSelect '1')
编写select RSA_ID from exec(uspRisksEditSelect '1')
但它给我一个错误。 我想我们需要为它编写一些动态的sql。 但我是新手。
您不能直接使用存储过程的结果 - 您需要将其存储到内存或临时表中并从那里开始:
DECLARE @tableVar TABLE (ID INT, Name VARCHAR(50)) -- whatever your sp returns
INSERT INTO @tableVar
EXEC uspRisksEditSelect '1'
SELECT RSA_ID FROM @tableVar
但绝对没有必要使用动态SQL .....
您应该编写一个表值用户函数。
如果您能够修改存储过程,则可以轻松地将所需列数作为参数:
CREATE PROCEDURE sp_GetDiffDataExample
@columnsStatement NVARCHAR(MAX) -- Needed columns
AS
BEGIN
DECLARE @query NVARCHAR(MAX)
SET @query = N'SELECT ' + @columnsStatement + N' INTO ##TempTable FROM dbo.TestTable'
EXEC sp_executeSql @query
SELECT * FROM ##TempTable
DROP TABLE ##TempTable
END
在这种情况下,您无需手动创建临时表 - 它会自动创建。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.