DBA

sp_executesql - 매개변수를 포함한 동적쿼리 본문

[2] Database/MS-SQL

sp_executesql - 매개변수를 포함한 동적쿼리

코볼 2014. 4. 16. 14:36
728x90
반응형
SMALL

sp_executesql - 매개변수를 포함한 동적쿼리

 

아래는 회사에서 쿼리를 작성하다 그냥 붙여 넣음. 살포시 형식만 보기^^

 

declare

       @sqlAvgTime nvarchar(1000)

       , @paramDefinition nvarchar(100)

       , @avgRequiredTime decimal(38,18)

 

       , @samplingListTableName varchar(100)

 

set @samplingListTableName = 'SURVEY.dbo.T_SamplingList_2014000028'

set @paramDefinition = N'@avgRequiredTimeOut decimal(38,18) output'

set @sqlAvgTime =

N'select @avgRequiredTimeOut = AVG(requiredTime) from

(select

       PERCENT_RANK() over (order by requiredTime) as ranking, requiredTime from ' + @samplingListTableName + '

where requiredTime is not null) as a

where a.ranking between 0.3 and 0.7'

 

exec sp_executesql @sqlAvgTime, @paramDefinition, @avgRequiredTimeOut = @avgRequiredTime output

 

select @avgRequiredTime

 

 

 

 

[출처] http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=KO-KR&k=k(SP_EXECUTESQL_TSQL);k(SQL11.SWB.TSQLRESULTS.F1);k(SQL11.SWB.TSQLQUERY.F1);k(MISCELLANEOUSFILESPROJECT);k(DevLang-TSQL)&rd=true

 

sp_executesql [ @stmt = ] statement
[
  { , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' }
     { , [ @param1 = ] 'value1' [ ,...n ] }
]

 

 

[ @stmt= ] statement

Transact-SQL 문 또는 일괄 처리를 포함한 유니코드 문자열입니다. @stmt는 유니코드 상수 또는 유니코드 변수여야 합니다. + 연산자로 두 문자열을 연결한 식처럼 더 복잡한 유니코드 식은 사용할 수 없습니다. 문자 상수도 사용할 수 없습니다. 유니코드 상수를 지정한 경우 접두사 N으로 시작해야 합니다. 예를 들어 유니코드 상수 N'sp_who'는 유효하지만 'sp_who'는 유효하지 않습니다. 문자열의 크기는 사용 가능한 데이터베이스 서버 메모리의 용량에 따라서만 제한됩니다. 64비트 서버에서는 문자열 크기가 nvarchar(max)의 최대 크기인 2GB로 제한됩니다.

[참고]

@stmt는 변수 이름과 동일한 형식의 매개 변수를 포함할 수 있습니다. 예를 들면 다음과 같습니다. N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'

@stmt에 포함된 각 매개 변수에는 @params 매개 변수 정의 목록과 매개 변수 값 목록 모두에 해당되는 항목이 있어야 합니다.

 

[ @params= ] N'@parameter_namedata_type [ ,... n ] '
@stmt에 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 문자열은 유니코드 상수 또는 유니코드 변수여야 합니다. 각 매개 변수의 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. @stmt에 지정된 모든 매개 변수는 반드시 @params에 정의되어야 합니다. @stmt의 Transact-SQL 문 또는 일괄 처리에 매개 변수가 없으면 @params가 필요 없습니다. 이 매개 변수의 기본값은 NULL입니다.
 
[ @param1= ] 'value1'
매개 변수 문자열에 정의된 첫 번째 매개 변수의 값입니다. 값은 유니코드 상수 또는 유니코드 변수가 될 수 있습니다. @stmt에 포함된 모든 매개 변수에 대해 제공되는 매개 변수 값이 있어야 합니다. @stmt의 Transact-SQL 문 또는 일괄 처리에 매개 변수가 없으면 값이 필요 없습니다.
 
[ OUT | OUTPUT ]
매개 변수가 출력 매개 변수임을 나타냅니다. 프로시저가 CLR(공용 언어 런타임) 프로시저가 아닐 경우 text, ntextimage 매개 변수를 OUTPUT 매개 변수로 사용할 수 있습니다. 프로시저가 CLR 프로시저가 아닐 경우 OUTPUT 키워드를 사용하는 출력 매개 변수가 커서 자리 표시자일 수 있습니다.
 
n
추가 매개 변수의 값에 대한 자리 표시자입니다. 값은 상수 또는 변수만 가능합니다. 함수 또는 연산자를 사용하여 작성한 식처럼 더 복잡한 식은 값으로 사용할 수 없습니다.

 

728x90
반응형
LIST
Comments