DB2 DROP AND CREATE TABLE - PullRequest
       11

DB2 DROP AND CREATE TABLE

0 голосов
/ 09 января 2011

Я пытаюсь убедиться, что когда я запускаю хранимую процедуру, она проверяет, существует ли таблица, и если она это делает, то создает ее заново, а затем заново создает таблицу.Использование следующей сохраненной процедуры

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

Теперь точка, помеченная выше ** - >>, не нравится Data Studio.Я не уверен, что не так с этим утверждением.пожалуйста помогите

1 Ответ

0 голосов
/ 01 февраля 2011

Не уверен насчет DB2, но в Oracle вы не можете выполнить DDL в стандартном PL / SQL. Вместо этого вы должны поместить DDL как VARCHAR2 и выполнить оператор EXECUTE IMMEDIATE.

EXECUTE IMMEDIATE 'drop table AELUM.ROOTNODES';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...