Oracle Developer Tools 的查詢視窗編譯有換行符號的 Package 會發生錯誤
這是個很鳥的問題,而且我爬文爬不到解法,若有善心人士知道怎麼解決,請務必通知我,感謝啊~~
安裝了 ODAC 11.2 Release 4 Production Released with Entity Framework and LINQ Support 後,先依 Oracle 官方文件 Entity Framework, LINQ and Model-First for the Oracle Database 做練習,結果才做到透過 Oracle Developer Tools 的 Query Window 編譯範例 Procedure,就死掉了....
第一個原因很簡單,文件和範例中都沒說要建立 Employees 資料表咩,也沒說有什麼欄位啊,我只好自己從範例程式中去反推出這個 Table 的結構:
CREATE TABLE "EMPLOYEES" (
"EMPLOYEE_ID" NUMBER NOT NULL,
"SALARY" NUMBER(20,2) NOT NULL,
"FIRST_NAME" VARCHAR2(200 BYTE) NOT NULL,
"LAST_NAME" VARCHAR2(200 BYTE) NOT NULL)
/
第二個原因就氣死人,搞掉我三個小時...下面的 Procedure 在查詢視窗編譯成功,但是有錯誤發生:
CREATE OR REPLACE PROCEDURE "INCREASE_SALARY_BY_10" ("ID" IN NUMBER, "SAL" IN NUMBER) IS
BEGIN
UPDATE LEO_EMPS E SET E.SALARY = SAL+10 WHERE E.EMPLOYEE_ID = ID;
END;
/
ORA-24344: 成功編譯, 但有錯誤
錯誤訊息:
但是這個 Procedure,貼到 Sql Plus 中編譯不會有錯,透過 PL/SQL Developer 的 SQL Windows 編譯也不會有錯,換言之,只有在 Oracle Developer Tools 中才會有問題。因為 Oracle 前科累累,我第一個想法就是,該不會是換行符號的問題吧,所以就把整個 Create Procedure 的換行符號拿掉,再編譯果然就 Pass,一換行就又失敗。但是 Oracle Developer Tools 並沒有提供可以設定換行符號的地方啊,一整個囧!!!
爬了好多文章,都沒有找到解法,而且我在 Visual Studio 2008 和 2010 都測試過,都存在這隻臭蟲
最後在 Stackoverflow 找到這篇文章,印證我的推論,但是沒有直接的解法……
Execute Oracle Script from Visual Studio
--------
沒什麼特別的~
不過是一些筆記而已