Я хочу взять число и дважды вернуть значение аргумента. Хотя я ожидал бы идти по линииОбъявление функции 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
СУБД выдает следующее сообщение об ошибке:
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
@ Duncan - 'create' и' execute' - два отдельных оператора, а ошибка - в строке 1 второго оператора. 'exec' - это просто сокращение SQL * Plus, которое расширяется до' begin timestwo (5); end; ', которые не будут очевидны, подумал, что ошибка показала полную вещь. Символом 7 этого является имя 't' в имени функции, которое также могло бы добавить к путанице. –
После ошибки можно использовать 'list', чтобы увидеть, что отправил SQL * Plus, с номерами строк, которые соответствуют номерам строк в ошибке. –