質問

質問者:sunnys PL/SQLの文法
困り度:
  • すぐに回答を!
oracle8,windows95を使用しています。
PL/SQLで、シーケンスを削除して再度作成するという処理を書きたいのですが、PL/SQLはまったくの素人のためアドバイスをいただけたら、と思います。

実行したいのは、以下のSQL文です。

1) SQL>DROP SEQUENCE SQC_TEST
2) SQL>CREATE SEQUENCE SQC_TEST
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
MINVALUE 1
CYCLE;

これを、PL/SQLで実行するにはどうかけばよいでしょうか?

CREATE OR REPLACE PROCEDURE HC_CREATE_SEQ
BEGIN
DROP SEQUENCE SEQ_車両申請 FROM DUAL;

CREATE SEQUENCE SQC_TEST
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
MINVALUE 1
CYCLE;
END;
/

と書いてみましたがコンパイルに失敗しましたとおこられてしまいます。
ヒントだけでもいただけたら、と思います。
よろしくお願いいたします。
質問投稿日時:01/12/27 22:33
質問番号:191547
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:chaff PL/SQLでは、データ定義言語(DDL)は基本的には記述できません。
よって、 CREATE xxxx とか DROP xxxx なんて書くことはできないというわけです。
じゃあ方法はぜんぜんないかというと...そんなことはないわけで、PL/SQLについてくる「DBMS_SQLパッケージ」っていうものを使います。
↓のサイトでもちらっと紹介していますが、詳細は
「PL/SQL パッケージ・プロシージャリファレンス」(ORACLE開発者マニュアルセット所収)を参照してください
種類:回答
どんな人:経験者
自信:自信あり
回答日時:01/12/28 00:13
回答番号:No.1
参考URL: http://www.mars.dti.ne.jp/~o-shin/new/kowaza/body1500.html
この回答への補足できました!!(^O^)/
参考URLが大変参考になりました。
どうもありがとうございました〜
また何かありましたら宜しくお願いいたします!
この回答へのお礼回答ありがとうございます。
なるほど、そのままでは使えないんですね。
リファレンスが手元にないので参考URLを見てきます。
また質問するかもしれませんので宜しくお願いいたします。