テーブルを作成する前にテーブルが存在するかどうかを確認するためのコードを記述しようとしています。開始するには、次のコードを実行しようとしています。PL/SQLブロック内にCREATE TABLE文を置くことはできますか?
BEGIN
create table IT.DEVOPS_UC_SERVER_REG_TABLE
(
agentname VARCHAR2(100) not null,
servername VARCHAR2(100) not null,
datelastdeployed TIMESTAMP(6) WITH TIME ZONE,
technology VARCHAR2(100) not null,
issetup VARCHAR2(10)
);
EXCEPTION
NULL;
END;/
ただし、これは有効なPL/SQLコードではないようです。誰がなぜこのような場合があるのか知っていますか? PL/SQLのDDLとDMLの違いはありますか?
'exception'ブロックが不正です。あなたが意味していれば、 '...他の人がnullになった時の例外。 ...、それをやめて!! –
PL/SQLはDDLではなくDMLのみを解析します。そのため、DDLを文字列にラップしてSQLエンジンに渡す必要があります。 EXECUTE IMMEDIATEおよびDBMS_SQLは、そうするための2つの方法です。 –
plsqlブロックにテーブルを作成する必要はありません。 ddlは通常作成され、単独で実行されます。 s.oにはいくつかの例があります。これをplsqlブロックで行う必要がある場合。 –