본문 바로가기
프로그래밍/TSQL

MSSQL 동적쿼리 파라미터 전달(SP_EXECUTESQL WITH PARAMETER)

by 정리 습관(★arranging★) 2020. 11. 6.
728x90
DECLARE @CONDITION GEOMETRY

EXECUTE SP_EXECUTESQL @QUERY,N'@CONDITION_P AS GEOMETRY',@CONDITION

MSSQL 동적쿼리 파라메터 전달

파라메터 전달 방법 SP_EXECUTESQL 을 이용합니다.

유의 사항 NVARCHAR를 사용합니다.

동적쿼리 문자열 내의 변수 정의를 해주어야합니다.

 

사용 방법

1.NVARCHAR 문자열로 동적쿼리 작성 시 문자열내에 @변수명 으로 변수 입력

2.EXCUTE SP_EXECUTESQL 에 문자열,[내부에서 사용한 변수의 정의],[실제값]

 

DECLARE @CONDITION GEOMETRY

EXECUTE SP_EXECUTESQL @QUERY,N'@CONDITION_P AS GEOMETRY',@CONDITION

 

* 수행할 동적 쿼리가 SP이고 OUTPUT이 있는 경우 [내부에서 사용한 변수 정의] OUTPUT으로 정의 해줄 수 있다.

아래는 예시 LSM_FIND_DIC_LANGUAGE_CP 라는 OUTPUT이 있는 SP를 수행하고 결과를 받고 싶을 때

DECLARE @KOR_NAME NVARCHAR(500)
DECLARE @KOR_NAME_RET	NVARCHAR(500) 
DECLARE @ENAME_RET	NVARCHAR(500) 
DECLARE @CNT_ERR_RET	INT 
DECLARE @CNT_TOKEN_RET	INT 
DECLARE @CNT_FIND_RET	INT 
DECLARE @FIND_TYPE_RET	INT 	
DECLARE @RESULT_CHK_QUERY NVARCHAR(1024)
DECLARE @PARM NVARCHAR(500)

SET @PARM = ' @KOR_NAME_O NVARCHAR(500) OUTPUT'
SET @PARM += ', @ENAME_O NVARCHAR(500) OUTPUT'
SET @PARM += ', @CNT_ERR_O INT OUTPUT'
SET @PARM += ', @CNT_TOKEN_O INT OUTPUT'
SET @PARM += ', @CNT_FIND_O INT OUTPUT'
SET @PARM += ', @FIND_TYPE_O INT OUTPUT'
		
SET @RESULT_CHK_QUERY = '['+@DIC_SERVER+'].['+@DIC_INSTANCE+'].DBO.LSM_FIND_DIC_LANGUAGE_CP 2, '''+ @KOR_NAME+''', @KOR_NAME_O OUT, @ENAME_O OUT, @CNT_ERR_O OUT, @CNT_TOKEN_O OUT, @CNT_FIND_O OUT, @FIND_TYPE_O OUT'	
EXEC SP_EXECUTESQL @RESULT_CHK_QUERY,@PARM, @KOR_NAME_O=@KOR_NAME_RET OUT,@ENAME_O=@ENAME_RET OUT,@CNT_ERR_O=@CNT_ERR_RET OUT,@CNT_TOKEN_O=@CNT_TOKEN_RET OUT,@CNT_FIND_O=@CNT_FIND_RET OUT,@FIND_TYPE_O=@FIND_TYPE_RET OUT

 

 

댓글