0

ストアド プロシージャを実行するときにテーブルが存在するかどうかを確認し、存在する場合は削除してからテーブルを再作成するようにしています。次のストアド プロシージャの使用

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

上記の **-->> というラベルの付いたポイントは、データスタジオに好まれていません。このステートメントの何が問題なのかわかりません。助けてください

4

1 に答える 1

0

DB2についてはわかりませんが、Oracleでは標準のPL/SQLでDDLを実行できません。代わりに、DDL を として配置し、ステートメントVARCHAR2を実行する必要があります。EXECUTE IMMEDIATE

EXECUTE IMMEDIATE 'drop table AELUM.ROOTNODES';
于 2011-02-01T15:33:10.720 に答える