프로시저 내부에서 다음과 같은 형식으로 실행을 시키면 에러가 나고 실행이 안되게 된다.

DECLARE @PROC NVARCHAR(MAX)
set @t_str = REPLACE(@t_str,'''','''''')
Set @PROC = N'EXEC ['+@vLinkedServerName+'].['+@TDatabaseName+'].dbo.up_DW2_SM_SpecialDeploy 
                        '''+@ObjectName+''', '''+@t_str+''', '''+@ObjectType+''''

EXEC @PROC        <==  이 부분이 문제


<Solution>
내부 프로시저를 실행시킬 때 위 부분을 EXEC (@PROC) 로 실행하면 된다.
 
<WHY>
EXECUTE를 실행할 때 다음과 같이 실행문을 실행할 때는 괄호를 붙이지 않는다.
SET @PROC = 'up_DW2_DPM_SendMailDeployResult_02 @SInstanceName, @SDatabaseName, @ObjectName'
EXEC @PROC
하지만 위와 같이 동적쿼리를 사용하든가 하는 경우에는 스트링이 넘어가기 때문에 EXEC (@PROC) 같이 괄호를 붙여서 실행해야 에러가 나지 않는다.

'IT > MS-SQL' 카테고리의 다른 글

SP 실행 권한 문제  (0) 2011.03.08
MSSQL 단축키  (0) 2011.03.02
MSSQL SELECT절에서 두번째로 높은 값 찾기  (0) 2011.02.24
MSSQL Cursor in Stored Procedure  (0) 2011.02.22
MSSQL 특정 단어가 포함된 프로시저 찾기  (0) 2011.02.22
AND


How can I find stored procedure by search text in MS-SQL

SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%Search_Text%'
AND ROUTINE_TYPE='PROCEDURE'
order by ROUTINE_NAME


추가: varchar(4000) 보다 큰 sp까지 찾는 방법
SELECT so.name FROM dbo.sysobjects so,dbo.syscomments sc
WHERE so.id=sc.id AND type = 'P' 
AND sc.text LIKE '%Search_Text%' ORDER BY so.name





'IT > MS-SQL' 카테고리의 다른 글

SP 실행 권한 문제  (0) 2011.03.08
MSSQL 단축키  (0) 2011.03.02
내부 프로시저 실행시킬 때 EXECUTE 주의점  (0) 2011.02.28
MSSQL SELECT절에서 두번째로 높은 값 찾기  (0) 2011.02.24
MSSQL Cursor in Stored Procedure  (0) 2011.02.22
AND