-- drop procedure.
IF Exists(select 1 from syscat.procedures where procname=upper('P_getdata') and procschema='TEMP')
drop procedure TEMP.P_getdata
end if;
create procedure TEMP.P_getdata
....
------解决方案--------------------------------------------------------
你是说上面的语句无法执行 还是怎么的?
------解决方案--------------------------------------------------------
IF Exists(select 1 from syscat.procedures where procname=upper('P_getdata') and procschema='TEMP')
drop procedure TEMP.P_getdata
end if;
这种在plsql或者tsql里面才有的
直接drop procedure TEMP.P_getdata
就行了
------解决方案--------------------------------------------------------
可以借助工具嘛。比如 ibm data studio.方便管理。
------解决方案--------------------------------------------------------
直接drop procedure TEMP.P_getdata,在db2里没法通过这种方式判断
------解决方案--------------------------------------------------------
db2里存储过程是通过 模式名PROCSCHEMA,过程名PROCNAME,参数个数PARM_COUNT,参数类型PARM_SIGNATURE确定其唯一性的
其中PARM_SIGNATURE在SYSCAT.PROCEDURES以十六进制形式存储
删除存储过程的时候必须带各个参数的类型才能成功
例如:
创建以下两个存储过程
CREATE PROCEDURE PRIVATE.TEST_P (IN a VARCHAR(1)) BEGIN ...
CREATE PROCEDURE PRIVATE.TEST_P (IN a VARCHAR(1),IN b INTEGER) BEGIN ...
删除以上两个存储过程
DROP PROCEDURE PRIVATE.TEST_P (VARCHAR())
CREATE PROCEDURE PRIVATE.TEST_P (VARCHAR(),INTEGER))
ps:db2里函数也是相同,类似于C++里的函数