科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网存储频道在删除存储过程时碰到SQL0458N错误时怎么办?

在删除存储过程时碰到SQL0458N错误时怎么办?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如果在使用DROP PROCEDURE时参数类型不匹配时,就会碰到SQL0458N错误

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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章