我一个存储过程是这样的
create or replace procedure proc_HBJUpdate
(rate in varchar2,--比例
nd in varchar2) --年代
as
begin
update jfmxb set HBJ1=grjf1*rate where ND=nd;
end;执行的时候是这样写的
declare begin
Execute immediate proc_HBJUpdate(0.5, 1998);
end;
错误提示:非法的变量名/编号执行语句该怎么写呢?
create or replace procedure proc_HBJUpdate
(rate in varchar2,--比例
nd in varchar2) --年代
as
begin
update jfmxb set HBJ1=grjf1*rate where ND=nd;
end;执行的时候是这样写的
declare begin
Execute immediate proc_HBJUpdate(0.5, 1998);
end;
错误提示:非法的变量名/编号执行语句该怎么写呢?
create or replace procedure proc_HBJUpdate
(rate in varchar2,--比例
l_nd in varchar2) --年代
as
begin
update jfmxb set HBJ1=grjf1*rate where ND=l_nd;
end;
字符型,加引號。
begin
Execute immediate proc_HBJUpdate('0.5', '1998');
end;
(rate in number,--比例
l_nd in varchar2) --年代
as
begin
update jfmxb set HBJ1=grjf1*rate where ND=l_nd;
end;
begin
Execute immediate proc_HBJUpdate(0.5, '1998');
end;
这样试试
begin
Execute immediate proc_HBJUpdate('0.5', '1998');
end;
还是错误提示:非法的变量名/编号
proc_HBJUpdate('0.5','1998');
end;
直接这样就OK了,不需要加Execute immediate 这个
begin
update jfmxb set HBJ1=grjf1*rate where ND=nd;
end;
这里的入参要加引号吧'rate'不能直接乘以