Stored procedures Can';t替换创建表的现有存储过程

Stored procedures Can';t替换创建表的现有存储过程,stored-procedures,db2-luw,Stored Procedures,Db2 Luw,我有一个删除/创建表的存储过程。第一次创建过程时,它会成功,并且过程运行正常。但是,如果我尝试替换该过程,则会出现错误: The name of the object to be created is identical to the existing name "TABLENAME" of type "TABLE". 即使过程在表创建语句之前有一个“TABLENAME”的drop语句,它也会这样做。一个简单的例子: create or replace procedure example LA

我有一个删除/创建表的存储过程。第一次创建过程时,它会成功,并且过程运行正常。但是,如果我尝试替换该过程,则会出现错误:

The name of the object to be created is identical to the existing name "TABLENAME" of type "TABLE".
即使过程在表创建语句之前有一个“TABLENAME”的drop语句,它也会这样做。一个简单的例子:

create or replace procedure example
LANGUAGE SQL
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '42704'
BEGIN END;

drop table TABLENAME;

create table TABLENAME(AN INTEGER);

END;
有没有办法让DB2识别drop语句或忽略错误


我使用的是DB2V10.1.0.3。

要作为独立的SQL块运行一系列命令,请确保使用不同的SQL分隔符,而不是分号。分号在SQL PL中用作语句终止符,因此需要使用不同的字符来分隔脚本中的多个命令。将过程末尾的分号(;)更改为其他类似“@”的内容

请参见

这看起来像一个bug(或“功能”)。您可以通过动态执行
CREATE TABLE
语句来解决此问题:
executeimmediate'CREATE TABLE TABLENAME(一个整数)'