Plsql pls-00306程序调用中参数的数量或类型错误
我是PL SQL新手,如何解决调用过程中pls-00306错误的参数数量或类型Plsql pls-00306程序调用中参数的数量或类型错误,plsql,Plsql,我是PL SQL新手,如何解决调用过程中pls-00306错误的参数数量或类型 CREATE OR REPLACE PROCEDURE overtime ( Normal_Hours NUMBER , Hours_worked NUMBER , message VARCHAR2 , Overtime IN OUT NUMBER ) AS Begin DBMS_OUTPUT.PUT_LINE('ENTER HOURS WORKED' || &hours_work
CREATE OR REPLACE PROCEDURE overtime (
Normal_Hours NUMBER ,
Hours_worked NUMBER ,
message VARCHAR2 ,
Overtime IN OUT NUMBER )
AS
Begin
DBMS_OUTPUT.PUT_LINE('ENTER HOURS WORKED' || &hours_worked);
IF hours_worked <=Normal_Hours THEN
DBMS_OUTPUT.PUT_LINE('NO OVETIME WORKED');
ELSE
BEGIN
Overtime := Hours_worked - Normal_Hours;
DBMS_OUTPUT.PUT_LINE('You have worked' || Overtime );
END;
END IF;
END;
/
创建或替换过程超时(
正常工作小时数,
工作小时数,
消息VARCHAR2,
加班(输入输出号码)
作为
开始
DBMS|u OUTPUT.PUT|u行('输入工作小时数'| |和工作小时数');
如果工作时间错误。。。使用正确数量和类型的参数调用过程?例如
declare
v_overtime number;
begin
overtime(
normal_hours => 8
,hours_worked => 12
,message => 'clever message'
,overtime => v_overtime
);
dbms_output.put_line(v_overtime);
end;
/
请注意,因为第四个参数的传递模式是“输入输出”
,所以您需要将其绑定到变量中-常数不行。创建过程或函数时,调用过程或函数时声明的参数应一致
CREATE OR REPLACE PROCEDURE overtime (
Normal_Hours NUMBER ,
Hours_worked NUMBER ,
message VARCHAR2 ,
Overtime IN OUT NUMBER )
由于在过程中声明了4个参数,因此根据规则,在调用过程时,还应该传递4个变量/值
declare
out_overtime number; -- this is the variable that will catch the value passed by the procedure
begin
overtime(8,9,'One Hour overtime', out_overtime);
dbms_output.put_line('Total overtime is '||out_overtime||' hours');
end;
调用
超时
或编译超时
时是否会出现此错误?因为&hours\u worked
可能是源代码,因为&
可能在编译时接受用户输入,并合并到过程中,从而导致奇怪。编译不会给出错误,调用过程时会出错。谢谢您的帮助……不过我还是设法用另一种方法完成了。