2012-02-21 16 views
3

Visual Studioからoracle plsqlスクリプトを実行します。 Oracle's visual studio toolsをインストールし、oracle dbインスタンスに接続されたVS2010に新しいクエリー・ウィンドウを開きました。ここで私が実行しようとしているサンプルスクリプトです:Visual StudioからOracleスクリプトを実行

DECLARE 
BEGIN 
DBMS_OUTPUT.put_line ('Hello World!'); --tried various types of statements here 
END; 

と関係なく、私は次の取得開始/終了ブロックの本体内に配置しようとするもの:

ERROR 
ORA-06550: line 4, column 3: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: 

    ; <an identifier> <a double-quoted delimited-identifier> 
The symbol ";" was substituted for "end-of-file" to continue. 

IドンSQLの開発者やヒキガエルのような他のツールから実行しても同じ問題は発生しません。何がありますか?

答えて

2

END;の後ろに新しい改行文字が追加されていることを確認してください(行番号)。 4 は、最後の1であってはなりません。

DECLARE 
BEGIN 
    DBMS_OUTPUT.put_line ('Hello World!'); --tried various types of statements here 
END; -- press Enter here 

Oracleデータ・クライアント(Oracle.DataAccess.Client)そのことについては本当にうるさいです。

更新:私は疑問に、問題は行末と関係がありました。 OracleはPL/SQLスクリプト・ブロック内の\r0x0d)文字を受け入れませんが、通常のSQLを処理する場合は無視されるようですが、問合せウィンドウでは標準Windowsの行末\r\n0x0d 0x0a)を使用しています。何が問題を引き起こすのか。

私はを使用して、Execute Queryツールバーのボタンを押したとき、およびMenu -> Tools -> Execute SQL *Plus Scriptメニュー項目を選択したときに、ワイヤを介して転送されたものを確認しました。結果は奇妙な、しかし、予測可能である:は\nから\r\n変換しないSQL * Plusスクリプトを実行しながら、(と私はPLS-00103を得た)あるとして、クエリは、クエリテキストを送る実行

(コマンドが正常に完了しました(複数可)。)

だから、あなたがこれらのオプションを持っているようだ:

  1. メニューを経由して、あなたのスクリプトブロックを実行します - > [ツール] - > [実行SQL * Plusスクリプト
  2. することが可能な任意のエディタを使用してディスクドライブにスクリプトを保存Unixスタイルの行末を使って、そしてクエリ]ウィンドウから開く(それは既存ファイル内の行末を保持し、私がチェックした)
  3. 使用Visual Studio用のOracle開発ツールよりも少し知的な何か(私は、このオプションは自分自身を好む)

これが役に立ちます。

+0

これは違いはありません。 – Alex

+0

@Alex:私の回答を更新しました –

+0

あなたは正しいです。 CRを削除するVSプラグインを使用する別のオプションがありますが、動作させることができませんでした:http://grebulon.com/software/stripem.php – Alex

1

decllareには識別子/変数が必要です。何も持っていないので、declare文を削除してください。

+0

DECLAREを削除しても違いはありません。エラーはまだそこにあります。 – Alex

関連する問題