계층 구조 포럼 사용자가 더 높으면이 문제와 관련된 새로운 질문으로 내 문제를 제안하십시오 : declare variable for query string.쿼리 문자열에 대한 변수
변수를 사용할 수 있기 때문에 여기에서 동적 쿼리를 사용하고 있습니다 (매개 변수 스니핑과 관련된 실험을 위해 필요함). 내 쿼리는 다음과 같습니다 나는 @Sql에 변수 @i의 선언을 이동
'Msg 137, Level 15, State 2, Line 28
Must declare the scalar variable "@i".'
다음은 그렇다고 작동합니다
DECLARE @i NVARCHAR(10)
SET @i = 'POL'
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT
a.something1,
b.something2,
c.something3
FROM
aaa a WITH(NOLOCK)
LEFT JOIN bbb b WITH(NOLOCK) ON....
LEFT JOIN ccc c WITH(NOLOCK) ON....
WHERE
a.somethingelse = ''aa''
AND
((a.entirelysomethingelse=''aaa'') OR (a.entirelysomethingelse=''aaaa''))
AND
b.anotherdifferentsomething != 41
AND
c.yetanotherdifferentthing LIKE(''%@%'')
AND
c.datafromvariablewannabe = (@i)
GROUP BY
...
ORDER BY
...'
EXECUTE (@SQL)
내가 좋아하는 내 쿼리 임 점점 오류를 실행하고자합니다. 아직도 나는 그것이 내가 원했던 것이라고 생각하지 않는다. 내가 뭔가 잘못하고 있거나 같이하는 건가요 것은 임 MSG137 오류가 있으므로
DECLARE @sql VARCHAR(MAX)
SET @sql = '
DECLARE @i NVARCHAR(10)
SET @i = 'POL'
SELECT
a.something1,
b.something2,
c.something3
FROM
aaa a WITH(NOLOCK)
LEFT JOIN bbb b WITH(NOLOCK) ON....
LEFT JOIN ccc c WITH(NOLOCK) ON....
WHERE
a.somethingelse = ''aa''
AND
((a.entirelysomethingelse=''aaa'') OR (a.entirelysomethingelse=''aaaa''))
AND
b.anotherdifferentsomething != 41
AND
c.yetanotherdifferentthing LIKE(''%@%'')
AND
c.datafromvariablewannabe = (@i)
GROUP BY
...
ORDER BY
...'
EXECUTE (@SQL)
내 코드에서 실수가가 있나요? 아니면 내가 여기서하고 싶은 단지 불가능한 작업이다.
이 쿼리에서 저장 프로 시저를 만들고 싶지 않습니다. 저장 프로 시저에 의존하지 않고 변수를 사용할 수 있기를 원합니다.
하이퍼 링크 된 질문에서 내 이전 질문과 관련된 문제에 대해 관리자/포럼 사용자에게 사과드립니다.
이것은 무엇을 의미합니까? @sql에 변수 @i 선언을 옮기면 작동합니다. 아직도 나는 그것이 무엇을 원하는지 생각하지 않는다 ' – TheGameiswar
변수는 배치에 범위가 지정되고 exec는 별도의 배치에서 실행되므로 동일한 @sql에 포함해야합니다. – TheGameiswar
나는 결과가 좋지만 결과를 얻는 방법이 있다는 것을 의미했습니다. 제가 찾고 있던 것이 아니 었습니다. 나는 내 변수가 "로드 될 수 있도록"쿼리 문자열 (@mortb sugessted와 같이)을 "끊어야"한다는 것을 몰랐다. 거기에. – M3How