2016-08-06 2 views
1

SQL Server에서 동적 쿼리 실행에 더미 열을 추가하는 방법이 있습니까?SQL Server에서 동적 쿼리 실행에 더미 열을 추가하는 방법이 있습니까?

declare @sql nvarchar(max) 

declare @centerid int 

@sql= 'Select ms.SetTitle,se.Quantity as ccp ,'' as dlp from StockEntry_Center se 
      inner join Mast_Set ms on se.SetID=ms.SetID where se.IsDeleted=''False'' and se.CenterID='+convert(nvarchar,@centerid) 

exec(@sql) 

위의 동적 쿼리에서 더미 열 '' as dlp을 추가하고 싶습니다. 그러나 그것은 오류를 보여줍니다. 미리 감사드립니다.

+0

'SET @sql = 'query here''를 사용하십시오. 오류 표시하십시오. – NEER

+2

*** *** 오류는 무엇입니까? 결국, 우리는 ** 당신의 스크린을 읽을 수없고, 당신 마음도 ** ** 우리에게 말해야 할 것입니다! ** –

+0

실제로는 빈 문자열 인 더미 컬럼을 추가하려고합니다. 이것이 문제가 될 가능성에 관계없이 매우 ** 매우 나쁜 ** 실천입니다. – FDavidov

답변

4

그것은 동적 SQL에, 당신은 정수 변수 가이 사건에 당신이 문자열 변수와 함께이 연계를 수행하고 가능한 SQL 주입 공격에 자신을 노출하는 경우, 더 미안보다 안전합니다.

+0

예 정답입니다. 감사합니다. @ M.Ali – user6180198

0

'''' as dmp 또는 NULL as dmp을 사용하십시오. 따옴표 때문에 오류가 발생했을 것입니다.

declare @sql nvarchar(max), @centerid int = 100 

SET @sql= N' Select ms.SetTitle 
        ,se.Quantity as ccp 
        ,'''' as dlp 
      from StockEntry_Center se 
      inner join Mast_Set ms on se.SetID = ms.SetID 
      where se.IsDeleted=''False'' 
      and se.CenterID = @centerid' 

Exec sp_executesql @sql 
        ,N'@centerid int' 
        ,@centerid 

사용 sp_executesql을 오히려 다음 합치 매개 변수로 매개 변수를 전달 : gofr1 이미 설명했지만 나는 또한 쿼리에서 몇 가지 다른 변화를 만들 것 같이 때문에 작은 따옴표의 오류를 얻고있다

+0

'' '' ''작은 따옴표로 해석됩니다. 그것은'' '' ''''이어야합니다. – FDavidov

+0

@FDavidov '' '+ @ param +' ''와 같이 따옴표로 묶어야하는 다른 변수와 연결하면 'param'을 제공하므로 '' '이어야합니다. – gofr1

+0

질문에 'Select ms.SetTitle, se.Quantity as ccp', 'dlp ...'와 같이 'select ms.SetTitle, se.Quantity as ccp'로 dlp로 변환되는 select가 포함되어 있습니다. .. "분명히 오류입니다. – FDavidov

0

는 다시 읽는 당신의 선택을 (그리고 쉽게 워크를 통해 할 수있게) :

@sql = 'Select ms.SetTitle,se.Quantity as ccp , 
       ''      as dlp 
      from StockEntry_Center se 
     inner join 
       Mast_Set   ms 
     on  se.SetID = ms.SetID 

    where se.IsDeleted=''False'' 
     and se.CenterID='+convert(nvarchar,@centerid) ; 

이로 변환 : 당신이 볼 수 있듯이

Select ms.SetTitle,se.Quantity as ccp , 
     '      as dlp 
     from StockEntry_Center se 
    inner join 
      Mast_Set   ms 
    on  se.SetID = ms.SetID 

where se.IsDeleted=''False'' 
    and se.CenterID=convert(nvarchar,@centerid) ; 

, 상기 하나의 '있다 as dlp 왼쪽.

관련 문제