首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

db2如何删除存在的存储过程

2012-02-09 
db2怎么删除存在的存储过程啊-- drop procedure.IF Exists(select 1 fromsyscat.procedures where procnam

db2怎么删除存在的存储过程啊
-- 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++里的函数

热点排行