을 간부 인 것이 아니라 내가 문제 EXEC (@SQL)
작업에 임시 테이블 (또는 테이블 변수)의 결과를 전달해야 :패스 테이블 변수 내가이 저장 프로 시저를 작성하는 것을 시도하고 SQL 서버
DECLARE @colsUnpivot AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)
DECLARE @Table_Name as Varchar(200)
DECLARE @transaction_Table NVarchar(500)
SET @Table_Name = 'opd_scholar'
SET @transaction_Table = 'opd_scholar_transaction'
--DECLARE @TEMP TABLE(colsUnpivot varchar(max))
CREATE TABLE #TEMP (colsUnpivot varchar(max))
SELECT @colsUnpivot = 'SELECT
STUFF ((
SELECT '', ''+ QUOTENAME(InTab.COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS InTab
WHERE InTab.TABLE_NAME = OutTab.TABLE_NAME
ORDER BY InTab.ORDINAL_POSITION
FOR XML PATH(''''), TYPE
).value(''.'',''VARCHAR(MAX)''
) , 1,1,SPACE(0))
FROM INFORMATION_SCHEMA.COLUMNS OutTab
WHERE TABLE_NAME = '''+ @Table_Name +'''
GROUP BY OutTab.TABLE_NAME'
--INSERT INTO @TEMP (colsUnpivot)
INSERT INTO #TEMP (colsUnpivot)
EXEC(@colsUnpivot)
PRINT @colsUnpivot
--SELECT colsUnpivot FROM @TEMP
SELECT colsUnpivot FROM #TEMP
DECLARE @TEMP1 NVARCHAR(MAX) = 'SELECT colsUnpivot FROM #TEMP'
--PRINT @TEMP
SET @query
= 'INSERT INTO '+ @transaction_Table +' ( unitid,institution,city,state,zip,code_name,lkp_value)
SELECT unitid,institution,city,state,zip,code_name,lkp_value
FROM
(
SELECT unitid,institution,city,state,zip, '+ @TEMP1+'
FROM '[email protected]_name+') AS cp
UNPIVOT (lkp_value for code_name IN ('[email protected]+')
) AS up'
PRINT @Query
--PRINT @Query1
EXEC(@query)
DROP TABLE #TEMP
I 사용할 테이블 변수를 (참조 논평 한 지역) 그러나 이것이 어떻게 작동하는지 확실하지 않다.
이 코드를 복사하여 더 많은 이해를 얻으려면 쿼리 창에 붙여 넣으십시오. 그게 바로 호간이야. 나는 어떤 변수 안에 @colsUnpivot의 결과를 넣고 싶다. 그래서 나는 현재 @ TEMP1을 사용하고있는 코드의 다음 세그먼트로 pss 할 수있다.
'하지만 문제가, 당신이 당신의 문제가 무엇을 설명 할 수있는 임시 table'의 결과를 전달하는가? – Lamak
뭔가 이상하게 보입니다. 한편으로는 쉼표로 구분 된 열의 목록을 만드는 것처럼 보입니다. 그러나 당신은 당신이 테이블 변수를 전달하기를 원한다고 말한다. 어쨌든 문제는 분명 여기에 있습니다. ->'DECLARE @ TEMP1 NVARCHAR (MAX) = 'SELECT colsUnpivot FROM # TEMP'' @ TEMP1 (좋은 변수 이름! – Hogan
필자는 실제로 복사하여 창에 붙여 넣을 필요가 없습니다. 여기에 범위에 문제가 있습니다 - 변수를 생성하기위한 동적 SQL이있는 경우 다시 전달할 수 없습니다 -이를 수행하는 유일한 방법은 별도의 함수를 사용하거나 동적 SQL을 사용하지 않는 방법을 찾는 것입니다 – Hogan