-1
我想取一個數字並返回兩倍的參數值。 雖然我希望它沿着PLSQL函數聲明
float timestwo(float num){ num*2; return num;}
PLSQL看來不過線去,到需要更模糊處理的辦法。我想我已經遵循的的Oracle 11g的需求,但在嘗試執行下面的代碼,
exec dbms_output.enable(1000000); --boilerplate
set serveroutput on --boilerplate
CREATE OR REPLACE FUNCTION timestwo (num
IN number)
RETURN number IS
product number(2) := 0;
BEGIN
product := (num*2);
RETURN product;
END;
/
EXECUTE timestwo(5);
show error --boilerplate
的DBMS引發以下錯誤的做法:
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'TIMESTWO' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
No errors
顯然,函數的聲明是不正確的,但有沒有人有任何想法如何去正確實現這個簡單的代碼?
我不知道這是錯誤的函數調用!也許有錯誤說第11行,而不是第1行,它會更加明顯!謝謝! – Stumbler 2013-04-23 19:15:43
@Duncan - 'create'和'execute'是兩個單獨的語句,錯誤在第二條語句的第一行。 'exec'只是一個SQL * Plus的簡寫,它被擴展爲'begin timestwo(5);最後;',哪一點不明顯,我認爲我錯誤顯示了完整的事情。其中的字符7是函數名稱中最好的't',這也可能增加了混淆。 – 2013-04-23 19:21:56
發生錯誤後,可以使用'list'來查看SQL * Plus發送的內容,其中的行號與錯誤中的行號相匹配。 – 2013-04-23 20:28:29