是pro*c中独有的问题吗?我在sqlplus中试了试好像没这个问题。 OPER@tl> create table test(aaa number,bbb number);表已创建。OPER@tl> insert into test values(1,2);已创建 1 行。OPER@tl> insert into test values(3,null);已创建 1 行。OPER@tl> insert into test values(null,null);已创建 1 行。OPER@tl> commit;提交完成。OPER@tl> declare 2 cursor cur is select * from test; 3 var1 test%rowtype; 4 begin 5 open cur; 6 loop 7 fetch cur into var1; 8 exit when cur%notfound; 9 dbms_output.put_line('aaa is:'||var1.aaa||' bbb is:'||var1.bbb); 10 end loop; 11 end; 12 / aaa is:1 bbb is:2 aaa is:3 bbb is: aaa is: bbb is:PL/SQL 过程已成功完成。OPER@tl>
OPER@tl> create table test(aaa number,bbb number);表已创建。OPER@tl> insert into test values(1,2);已创建 1 行。OPER@tl> insert into test values(3,null);已创建 1 行。OPER@tl> insert into test values(null,null);已创建 1 行。OPER@tl> commit;提交完成。OPER@tl> declare
2 cursor cur is select * from test;
3 var1 test%rowtype;
4 begin
5 open cur;
6 loop
7 fetch cur into var1;
8 exit when cur%notfound;
9 dbms_output.put_line('aaa is:'||var1.aaa||' bbb is:'||var1.bbb);
10 end loop;
11 end;
12 /
aaa is:1 bbb is:2
aaa is:3 bbb is:
aaa is: bbb is:PL/SQL 过程已成功完成。OPER@tl>
如果不用游标,直接取单个值也是报错ORA-1405
只有表中的每个字段都不为空,才能正常
你只有用nvl转化了。可以转化为一个特殊值,然后在程序中根据这个值知道它本来为空。
能否明示该如何转换NVL?谢谢!
明白了。NVL函数是SQL中的,如果值为空则返回一个指定的值。
我想还是在程序中增加指示变量来处理,谢谢!