DB2的存储过程和很多语言的函数一样 是支持重载的

就是同一个名字的存储过程 可以有不同的参数.

根据传入参数的个数个类型 系统会自动调用相应的存储过程

 

可当有好几个名字一样的存储过程的时候

Drop PROCEDURE xxxx不就不好使了

系统不知道删除哪个啊

对此有两种办法:

  1. 加上参数,比如Drop PROCEDURE xxxx(varchar(8))

系统就会找参数是varchar(8)的那个删

  1. 使用SPECIFIC NAME删

关于SPECIFIC NAME大家可以搜索一下 是存储过程在全库的唯一标识

有人以前可能不理解它存在的意义 现在应该明白了

它的意义就是因为对象的名字可以重载 唯一代表不了那个对象

事实刚说的第一种情况也是DB2会在系统表中寻找对应SPECIFIC NAME删

语法是 DROP SPECIFIC PROCEDURE xxxx