DB2 DROP AND CREATE TABLE

时间:2011-01-09 16:38:09

标签: db2 sql-pl

我正在尝试确保当我运行存储过程时它会检查表是否存在,如果存在,则将其删除然后重新创建表。使用以下存储过程

CREATE PROCEDURE PROCEDURE1 ()
DYNAMIC RESULT SETS 1
P1: BEGIN
if( exists(
select 1 from syscat.tables where tabschema = 'AELUM' and tabname = 'ROOTNODES'
)) then

drop table AELUM.ROOTNODES ;

CREATE TABLE "AELUM"."ROOTNODES" (
"UID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 NO CYCLE CACHE 20 NO ORDER ),
"NODENAME" VARCHAR(255),
"HASCHILD" INTEGER,
"CHILDTABLE" VARCHAR(255)
)
DATA CAPTURE NONE;

**-->>ALTER TABLE "AELUM"."ROOTNODES" ADD CONSTRAINT "ROOTNODES_PK" PRIMARY KEY ("UID");

end if;

END P1

现在标注上面的点** - >>不被数据工作室所喜欢。我不确定这句话有什么问题。请帮忙

1 个答案:

答案 0 :(得分:0)

不确定DB2,但在Oracle中,您无法在标准PL / SQL中执行DDL。相反,您必须将DDL作为VARCHAR2并执行EXECUTE IMMEDIATE语句。

EXECUTE IMMEDIATE 'drop table AELUM.ROOTNODES';