今週、私の会社では、SQLスクリプトをどのように記述するかについていくつかの議論がありました。
背景:データベースはOracle 10gです(間もなく11にアップグレードされます)。私たちのDBAチームは、SQLPlusを使用して、スクリプトを運用環境に展開します。
現在、セミコロンとスラッシュ(/
)の両方を使用していたため、最近失敗したデプロイがありました。セミコロンは各ステートメントの最後にあり、スラッシュはステートメントの間にありました。
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
スクリプトの後半に追加されたトリガー、作成されたビュー、およびストアドプロシージャがありました。;
との両方を持っている/
、それぞれの文は、(特にユニークであるために必要な挿入、上の)エラーを引き起こして二回実行するようになりました。
SQL Developerではこれは起こりません、TOADではこれは起こりません。特定のコマンドを実行した場合、これらのコマンドがないと機能しません。/
、それらの。
PL / SQLでは、サブプログラム(DECLARE、BEGIN、END)がある場合、使用されるセミコロンはサブプログラムの一部と見なされるため、スラッシュを使用する必要があります。
だから私の質問はこれです:データベースがOracleの場合、SQLスクリプトを記述する適切な方法は何ですか?DBがOracleであることを知っているので、常に/
?
sqlterminator
に!
応じて設定できます)、この規則には他のツールが従う傾向があります。ただし、PL / SQL言語では、必須の構文要素としてセミコロンを使用します。