2012-02-21 58 views
3

所以我想從Visual Studio執行一個oracle plsql腳本。我安裝了Oracle's visual studio tools,並在VS2010中打開了一個連接到oracle數據庫實例的新查詢窗口。下面是我試圖運行一個腳本示例:從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. 

我不從其他工具(如SQL開發人員或蟾蜍)運行時遇到同樣的問題。是什麼賦予了?

回答

2

確保您已在END;之後添加了新行字符,即行號。 4必須是最後一個:

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),而這正是是什麼導致了問題。

我使用Wireshark來查看當我點擊Execute Query工具欄按鈕時以及當我選擇Menu -> Tools -> Execute SQL *Plus Script菜單項時通過線路傳送的內容。其結果是陌生的,但可以預見的:執行查詢發送查詢文本原樣(和我PLS-00103),而執行SQL * Plus腳本翻譯\r\n\n

(命令成功完成(一個或多個)。)

因此,看來你已經有了這些選項:

  1. 通過菜單執行腳本塊 - >工具 - >執行SQL * Plus腳本
  2. 使用能夠任意編輯您的腳本保存到磁盤驅動器使用Unix風格的行結尾,然後從查詢窗口中打開它(它保留了行結束在現有文件,我檢查)
  3. 使用的東西有點比Oracle開發工具Visual Studio的更智能(我喜歡這個選項我自己)

希望這會有所幫助。

+0

這沒有什麼區別。 – Alex 2012-02-21 21:52:44

+0

@Alex:我更新了我的回答 – 2012-02-22 15:12:13

+0

你是對的。還有一種選擇是使用VS插件去除CR,但我無法使它工作:http://grebulon.com/software/stripem.php – Alex 2012-02-22 18:11:01

1

聲明必須有一個標識符/變量,因爲你沒有任何,刪除聲明語句。

+0

刪除DECLARE沒有區別。錯誤仍然存​​在。 – Alex 2012-02-21 21:52:11