сохранить результат запроса в переменную - SQL - PullRequest
0 голосов
/ 12 июня 2018

Есть вопрос

. my_table

У меня есть таблица "my_table", как показано на рисунке.Я создал переменную с именем "variable_1", и я выполняю запрос в пределах этого:

DECLARE @variable_1 nvarchar(4000) = 'SELECT Header FROM my_table WHERE rule = ''rule_1'''

, когда я выполняю это, exec(@variable_1)

Я получаю результат:

Заголовок


  • op1
  • op3

Я хочу сохранить результат variable_1 в новой переменной "Переменная_2 ".Могу ли я сделать что-то вроде этого?

DECLARE @variable_2 nvarchar(4000) = exec(variable_1)

В конце концов я хочу сохранить результат variable_1 (который будет op1, op3) в variable_2 и распечатать команду типа «SELECT op1, op3 from ...»

SELECT (результат от variable_1) ....

DECLARE @sql nvarchar(4000)

SET @sql = 'SELECT ' + @variable_2

Поэтому, когда я печатаю @sql, я получаю результат: SELECT op1, op3

Спасибо!

1 Ответ

0 голосов
/ 12 июня 2018

Попробуйте это

IF OBJECT_ID('Tempdb..#Table')IS NOT NULL
DROP TABLE #Table
CREATE TABLE #Table (Header varchar(10),[Order] INT,Rules   varchar(10))
INSERT INTO #Table
SELECT 'op1',1,'rule_1' UNION ALL
SELECT 'op2',2,'rule_2' UNION ALL
SELECT 'op3',3,'rule-3' 

SELECT * FROM #Table

DECLARE @variable_1 NVARCHAR(4000) = 'SELECT STUFF((SELECT '', '' + Header FROM #Table  WHERE Rules IN( ''rule_1'',''rule_2'') FOR XML PATH ('''')),1,1,'''')'


DECLARE @Temp TABLE (variable_2 nvarchar(4000))
INSERT INTO @Temp
EXEC (@variable_1)

DECLARE @sql nvarchar(4000)

SET @sql = (SELECT 'SELECT ' + variable_2 +' From' FROM @Temp)
SELECT @sql AS ExpectedResult
--PRINT @sql

Результат

ExpectedResult
--------------
SELECT  op1, op2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...