위의 명령으로 프로시저를 삭제하려고 하니 아래의 메세지가 나온후 삭제가 안됩니다.
ZETSWING.TEST_01에 대한 참조가 서명없이 수행되었지만 루틴이 스키마에서 고유하지 않습니다. SQLSTATE=42725
검색해봐도 속시원한 답변이 없네요.
도움말씀 부탁드립니다.
위의 영문 해석입니다. 도움이 될까해서리 ㅋ
Q:How can I drop one specific stored procedure when I have several overloaded procedures with the same name?
( 같은 이름으로 몇개의 중복된 프로시져를 사용할 경우, 어떻게 하나의 특정 프로시져를 불러내지요?) A: Each procedure must have a unique specificname in the DB2 system catalog.
(각각의 프로시져는 반드시 DB2 체제목록에 있는 고유한 특정이름을 가져야 합니다.)
This specificname can be used to delete the one procedure without affecting others with the same procname/routinename.
(이렇게 구분된 고유명은 같은 procname또는 routinename속에서 하나의 프로시져를 지울때 다른 것에 영향을 주지않고 사용할 수 있습니다.)
Use the following query to find the specificname for a procedure (be sure to modify the where clause with the correct name).
(프로시져에 대한 고유명을 찾기위해서는 다음과 같은 수식을 사용하세요.( 수정할 구문은 정확한 이름으로 확실히 하세요.))
There will be a break in specificname that will help identify the procedure with the parameters matching the procedure to be dropped.
(그렇게 하면 파라미터가 가리키는 것이 지워질 프로시져인가 확인하기 위하여 고유명( 혹은 특정 변수)에 멈출것입니다.
db2 select substr(specificname,1,10) as "SPECIFICNAME", \ substr(routinename,1,10) as "ROUTINE", substr(parmname,1,20)as "PARMNAME", \ CASE rowtype \ WHEN 'B' THEN 'Input/Output' \ WHEN 'C' THEN 'Result after casting' \ WHEN 'O' THEN 'Output' \ WHEN 'P' THEN 'Input' \ WHEN 'R' THEN 'Result before casting' \ END \ as "PARMTYPE" , \ substr(typename,1,10) \ from syscat.routineparms where routinename = 'MY_PROCEDURE' \ order by specificname, routinename
Once the correct specificname is determined, use this ddl: db2 drop specific procedure .
(한번더 정확한 변수가 지정되었다면, 다음 ddl을 사용하세요:
db2 drop specific procedure .