【发布时间】:2020-10-27 17:16:01
【问题描述】:
我有一个存储过程 - [dbo].[DynamicPivotTableInSql1] 我需要从另一个存储过程调用并继续进一步创建查询。我看到存储的过程 [dbo].[DynamicPivotTableInSql1] 正在成功执行,但没有返回结果。如果我在这里做错了什么,请告诉我。
我最近发布了一个相关问题,但进一步分析发现结果没有返回到调用存储过程是问题。
我需要在[dbo].[DynamicPivotTableInSql1]中使用动态sql,因为查询相当复杂,我必须根据某些输入参数扩展where子句。我只贴了一部分。
感谢您的帮助和时间!
CREATE PROCEDURE [dbo].[DynamicPivotTableInSql1]
AS
BEGIN
DECLARE @colsPivot AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@str_comp1 AS NVARCHAR(MAX),
@str_comp2 AS NVARCHAR(MAX)
SET @str_comp1 = ' comp1 IN (''Capacity'') and '
SET @str_comp2 = ' comp2 IN (''Refinery'') '
SET @colsPivot = 'SELECT STUFF((SELECT '',''
+ quotename(link_id)
from [dbo].[test_excel_poc_head] t
WHERE ' + @str_comp1 + @str_comp2 + '
FOR XML PATH(''''), TYPE ).value(''.'', ''NVARCHAR(MAX)'')
,1,1,'''')'
EXEC(@colsPivot)
END
调用过程如下:
BEGIN
DECLARE @colsPivot1 AS NVARCHAR(MAX),
@return_result AS NVARCHAR(MAX)
EXEC @return_result = [dbo].[DynamicPivotTableInSql1]
print('Return Value: ' + @return_result)
END
【问题讨论】:
标签: sql sql-server stored-procedures