2017-01-04 4 views
1

같은 쿼리 나는 코드가 있습니다SQL 매개 변수

DECLARE @sqlQuery NVARCHAR(4000); 
DECLARE @stn NVARCHAR(4000); 
SET @stn=N'SELECT cast(isnull(SUBSTRING(CDN.DokSumT(16,739684,1045,1,32768,1,1,739684,1,2,1,0,78877,0,3,1,1,0,0,0,0,0,-1) , 9 , 7),0) as decimal (28,4))'; 
SELECT @sqlQuery = 'SELECT GIDNumber, Name, @stn as stn FROM Table_342 WHERE Name LIKE ''%ABLE%'''; 
EXEC sp_executesql @sqlQuery, N'@stn NVARCHAR(4000)', @stn; 

이 요청 열 "STN"에서

enter image description here

를 반환 내가 쿼리 결과가 아닌 쿼리를 갖고 싶어. 어떻게 수행하나요? 도와주세요. 이런 식으로 뭔가를 시도

+0

답변은 "예"이고 "알 수 없음"입니다. 문제가 해결되는 가장 확실한 방법은 무엇입니까? 가지고 있고 누가이 데이터베이스를 설계 했습니까? –

+0

잘 모르겠지만 그렇게 생각합니다. – ngLucas

답변

2

.... sp_executesql 단지 첫 번째 매개 변수가있는 다음과 같은 매개 변수는 두 변수 SQL 문을 기대하기 때문에 전체 쿼리를 매개 변수로 치료를 받고

DECLARE @sqlQuery NVARCHAR(MAX) 
     , @stn  NVARCHAR(MAX) 
     , @stn_R DECIMAL(28,4); 

SET @stn = N'SELECT @stn_R = cast(isnull(SUBSTRING(CDN.DokSumT(16,739684,1045,1,32768,1,1,739684,1,2,1,0,78877,0,3,1,1,0,0,0,0,0,-1) , 9 , 7),0) as decimal (28,4))'; 

EXEC sp_executesql @stn 
       , N'@stn_R DECIMAL(28,4) OUTPUT' 
       , @stn_R OUTPUT 

SELECT @sqlQuery = 'SELECT GIDNumber, Name, @stn_R as stn FROM Table_342 WHERE Name LIKE ''%ABLE%'''; 

EXEC sp_executesql @sqlQuery 
       , N'@stn_R DECIMAL(28,4)' 
       , @stn_R; 

주 선언 또는 변수 값.

동적 쿼리의 실행을 두 개로 분할하고 출력 매개 변수를 사용하여 첫 번째 쿼리에서 값을 가져 와서 두 번째 쿼리로 전달해야합니다.

+0

메시지 137, 수준 15, 상태 2, 줄 1 "@stan"스칼라 변수를 선언해야합니다. – ngLucas

1

먼저 동적이지 않은 방식으로 시도하십시오. EXEC (@sqlquery)를 사용하여 동적으로 실행하십시오.