単一.sqlファイルにテーブルを作成* Plusを作成したり、テーブルの上に置き換えるエミュレートする:はBEGIN/ENDと私はOracleのSQLを実行しています小さなSQLスクリプトを持って
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE symbols';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
END IF;
END;
/
CREATE TABLE symbols (
blah blah,
blah blah,
);
EXIT;
SQL * Plusのコマンドラインがあります:私はEND後にスラッシュ(/)を省略した場合
sqlplus aegsys15_owner/pass#[email protected] @createSymbolsTable.sql << EOF
> EOF
、最初のBEGIN/ENDブロックを処理するように思われ、そして下にCREATE TABLEセクションを無視します。また、それは何かが全く助けて印刷されません - だけで接続/切断:
SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 13 15:49:34 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
78 Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
私は前方を持っている場合しかし、それは私にエラーを与えるスラッシュ:
まずEND IF;
*
ERROR at line 6:
ORA-06550: line 6, column 5:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
(begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
CREATE TABLE symbols (
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
、何上のBEGIN/END例外ブロックと同じ.sqlファイルのCREATE TABLEブロックの両方を持つ最良の方法は?
第2に、SQL * Plusから役立つ出力を得るための方法は何ですか?実行する各.sqlファイルには、複数のCREATE文(表、索引、同義語など)があります。私たちの理想的な出力は次のようになり、何かのように:そのようなことはしかし、SQLやPL/SQLで達成可能である場合
TABLE foo: Pass
SYNONYM bar: Fail
INDEX foo_1: Pass
わからない - あなたたちはそれが良いことだと思うならば、この問題を回避バッシュやPythonラッパースクリプトを書くことが幸せ溶液。あなたのif文に入れるのを忘れ
あなたは/ ENDを開始し、1つのSQLファイルにテーブルを作成しますが、あなたのCADEに –