카테고리 없음

[씨#] 저장 프로 시저가 오류를 제공함

필살기쓰세요 2021. 2. 2. 09:38

일부 공간을 제공 @tablename ORDER

Declare @sql varchar(max)=''

SET @sql = 'Select top (' + @rowval + ') * from '+quotename(@tablename)+ ' ORDER BY sno DESC'
                                                                        --^here
                                                                        EXEC (@sql)
                                                                        

또한 사용 Print/Select시작하여dynamic sql

이 동적 SQL에 보안을 추가하기 위해 다음과 같이 변경합니다.

  1. 확인 @rowval으로INT
  2. SQL 주입을 피하기 위해 매개 변수에 QUOTENAME함수 사용@tablename
  3. SP_EXECUTESQL대신 동적 쿼리를 실행하는 데 사용 합니다.EXEC

여기에 올바른 방법이 있습니다.

Declare @sql nvarchar(max)='',@tablename varchar(130), @rowval int 

select @sql  = 'Select top  (@rowval) * from '+quotename(@tablename)+ ' ORDER BY sno DESC'

exec sp_executesql @sql,N'@rowval int',@rowval = @rowval


출처
https://stackoverflow.com/questions/39920101