이 질문을 받았을 경우 사과 드리겠습니다. 답을 고사하고 싶습니다.동적 SQL의 "중첩"변수 - 올바른 구문을 유지하려면 어떻게해야합니까?
나는 다음을 수행 할 수있는 최선의 방법을 결정하기 위해 노력하고 있어요 :
Declare @sql nvarchar(4000)
, @Filter nvarchar(500)
SET @filter = 'WHERE value1 IN (''A'',''B'',''C'')'
SET @sql = '
DECLARE @Field nvarchar(50)
DECLARE process CURSOR FOR
SELECT value2
FROM table
'[email protected]+'
OPEN process
FETCH NEXT FROM process
INTO @field
WHILE @@Fetch_Status = 0
BEGIN
EXEC stored_procedure
@field = @field
@filter = '[email protected]+'
FETCH NEXT FROM process
INTO @field
END
CLOSE process
DEALLOCATE process
' print @sql execute sp_executesql @sql
여기서 문제는
이 코스의DECLARE @Field nvarchar(50)
DECLARE process CURSOR FOR
SELECT value2
FROM table
WHERE value1 IN ('A','B','C')
OPEN process
FETCH NEXT FROM process
INTO @field
WHILE @@Fetch_Status = 0
BEGIN
EXEC stored_procedure
@field = 'N'
@filter = 'WHERE value1 IN ('A','B','C')'
FETCH NEXT FROM process
INTO @field
END
CLOSE process
DEALLOCATE process
(A)에서 구문 오류로 연결로 변환한다는 것입니다 , B 및 C
이 문제를 해결하기 위해 replace(@filter,','')
의 변형을 시도했지만이 방법이 도움이되지 않습니다.
아이디어를주세요.
감사와 같은
; 매력처럼 작동합니다! 나는 그것을 과장 생각했다. –