RazorSQL ツールを使用して DB2 を操作しています。if table not exist ステートメントを含むプロシージャを作成しようとしています。
私が抱えている問題は、テーブルが存在しない場合、プロシージャが create table ステートメントを実行する必要があることです。プロシージャを共同作成しようとすると、エラー (構文エラー) が返されます。たとえば、テーブル ステートメントを作成するだけでは実行できません。
例:
CREATE PROCEDURE KLEMENTEST.create_table
()
LANGUAGE SQL
MODIFIES SQL DATA
--READS SQL DATA
--CONTAINS SQL
begin atomic
if (not exists(select 'A' from syscat.tables where tabschema = 'KLEMENTEST' and tabname='bendeldoba')) then
create table klementest.bendeldoba (
bdd_id_bdd INTEGER not null,
bdd_naziv VARCHAR(128) not null,
bdd_mesecev INTEGER not null default 0,
bdd_prispevki INTEGER,
bdd_procent numeric,
bdd_racuni INTEGER,
bdd_datvpisa DATE not null,
bdd_vpisal_uporabnik INTEGER not null default 0
);
alter table klementest.bendeldoba add constraint P_Key_1 primary key (bdd_id_bdd);
end if;
end
テーブルの変更が問題を引き起こしています。コメントするとうまくいきます。
CREATE PROCEDURE KLEMENTEST.create_table
()
LANGUAGE SQL
MODIFIES SQL DATA
--READS SQL DATA
--CONTAINS SQL
begin atomic
if (not exists(select 'A' from syscat.tables where tabschema = 'KLEMENTEST' and tabname='bendeldoba')) then
crete view def_schema.view1 as select * from sometable;
crete view def_schema.view2 as select * from someothertable;
end if;
end
できます
最初の作成プロシージャ クエリの「構文エラー」の問題はどこにありますか??
ありがとうございました