扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2007年9月7日
关键字:
产品: DB2 UDB
平台: 跨平台
版本:V7、V8
在删除存储过程时碰到SQL0458N错误时怎么办?
如果在使用DROP PROCEDURE时参数类型不匹配时,就会碰到SQL0458N错误:
db2 drop procedure testa()
SQL0458N 在按特征符引用例程 "BIYJ.RSA" 时,找不到匹配的例程。 SQLSTATE=42883
这时你可以从SYSCAT表中找出该存储过程的特定名称(SPECIFIC NAME),使用DROP SPECIFIC PROCEDURE命令删除该存储过程或者找到存储过程的精确定义,然后使用DROP PROCEDURE命令删除它。我们以下面的存储过程为例来看一下如何删除存储过程:
CREATE PROCEDURE testa ( IN dept_in INT,
OUT tot_comp DECIMAL(7,2))
LANGUAGE SQL
SPECIFIC testa_spec
BEGIN
SELECT sum(salary+comm)
INTO tot_comp
FROM staff
WHERE dept = dept_in ;
END@
如果使用下面的命令,我们就会碰到错误:
D:\>db2 DROP PROCEDURE testa()
DB21034E 该命令被当作 SQL语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0458N 在按特征符引用例程 "BIYJ.TESTA" 时,找不到匹配的例程。
SQLSTATE=42883
你可以使用下面的命令删除这个存储过程:
D:\>db2 DROP PROCEDURE testa(INT,DECIMAL(7,2))
DB20000I SQL 命令成功完成。
但是对于参数比较多的存储过程,这样比较麻烦。如果你在存储过程中定义了特定名称,如上例中我们指定了特定名称testa_spec,这是我们就可以使用下面的语句删除这个存储过程了:
D:\>db2 DROP SPECIFIC PROCEDURE testa_spec
DB20000I SQL 命令成功完成。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者