如下返回表类型的函数
create table fn_record_test(pi_num number)
return tb_test%rowtype
as
cursor cur_test is select * from tb_test where id=pi_num;
l_rec   tb_test%rowtype;
begin
  open cur_test ;
  fetch cur_test  into l_rec ;
  close cur_test ;
  return l_rec ;
end;调用函数
declare
l_rec   tb_test%rowtype;
begin
  l_rec := fn_record_test(15);
  if 请问这里如何判断l_rec变量是否存在记录呢?   then
    dbms_out.put_line('ok');
  end if; 
end;

解决方案 »

  1.   

    create table fn_record_test(pi_num number) ???
    是 function吧???if l_rec.id=15  then貌似你那里只能返回第一条记录。
      

  2.   

    create procedure fn_record_test(pi_num number,sqlcode out number,sqlerror out varchar2(50)) 存储过程要规范。用sqlcode 和sqlerror 返回 存储过程执行的结果或是异常的结果。
    sqlcode和sqlerror在项目中规范。
      

  3.   


    if l_rec.id=15  then 
      

  4.   

    找你表中一定不为空的字段,比如主键。  if l_rec.主键字段 is null then --没有数据
        dbms_out.put_line('ok'); 
      end if;
      

  5.   

    通过l_rec.count来检查是否含有记录,如果等于0表示没有记录!
      

  6.   

    你的处理过程可能有问题哦1. fn_record_test 传递的参数,查询后的结果是否只有一条? ID 是主键
    2. 调运函数的块中, 用ROWTYPE中的ID 是否为空来判断
    3. 异常的处理 不规范,这样 
    4. 处理流程 可以优化