我查询了两个表中的两个值,我想把两个值相除得到一个新值,但是总是报错,如下:
newpar:=newpar+par1/par2;
其中par1,par2是查询出的结果number类型,newpar是我定义的一个其他值也是number类型,但总是提示:
错误:PLS-00306: 调用 '/' 时参数个数或类型错误
错误:PL/SQL: Statement ignored
帮我看一下是什么问题啊。
newpar:=newpar+par1/par2;
其中par1,par2是查询出的结果number类型,newpar是我定义的一个其他值也是number类型,但总是提示:
错误:PLS-00306: 调用 '/' 时参数个数或类型错误
错误:PL/SQL: Statement ignored
帮我看一下是什么问题啊。
解决方案 »
- 急急急!求解
- 系统崩溃,怎么恢复数据
- 有关pl\sql调试 设断点,运行至断点处
- mssql数据库转换成oracle
- 我在程序中想用oracle提供的库去连接ORACLE,但是我不知道怎么做?我现在也知道怎么弄?大家帮帮我吧
- 没有这样revoke update on ANY TABLE from usera的写法?
- exp和imp备份恢复数据怎么才能把数据库用户的信息导过来?
- 存储过程或者函数怎样调试啊,有没有alert方法来显示变量值,或者有打印语句来打印变量值?急问
- 没有权限吗?
- 谁知道PRO*C和PROCEDURE的性能有什么区别. 有建设性意见均有分.
- oralce如何导出某个用户以及权限??
- 关于Oracle数据库查询问题
給你個沒錯的例子create or replace procedure testp
is
par1 number;
par2 number;
newpar number := 100;
begin
select 100,200 into par1,par2 from dual;
newpar:=newpar+par1/par2;
dbms_output.put_line(newpar);
exception
when others then
dbms_output.put_line('errors');
end;
/
set serveroutput on;
exec testp;
create or replace procedure selinfo(inum in number,outpar1 out number)
is
par1 number;
par2 number;
newpar number:=0;
rnum number:=0;
str varchar2(2000);
type cur_3 is ref cursor;
recur cur_3;
begin
str:='select t1.s1,t2.s1 from table1 t1 join table2 t2 on t1.id=t2.id order by t1.id asc';
open recur for str;
fetch recur into par1,par2;
while recur%found loop
if(par1>0 and pr2>0) then
newpar:=newpar+par1/par2;(就是报的这里的错)
rnum:=rnum+1;
end if;
fetch recur into par1,par2;
end loop;
outpar1:=newpar/rnum;
end selinfo;查询的两个字段都是非空的,只是有可能为0。
if(par1>0 and pr2>0) then--應是par2
--但改後此點執行沒有錯create table table1(
id int,
s1 number
);
create table table2(
id int,
s1 number
);insert into table1 values(1,2);
insert into table2 values(1,3);
insert into table2 values(1,0);SQL> declare
2 outpar1 number;
3 begin
4 selinfo(0,outpar1);
5 dbms_output.put_line(outpar1);
6 end;
7 /
.6666666666666666666666666666666666666667 已順利完成 PL/SQL 程序.
还有我在编译的时候就有错误,这种能调试不?
谢谢大家的解答啊,尤其是人生无悔。