declare
       --类型定义
       cursor c_job
       is
       select invclasscode,invclassname from bd_invcl where forinvname='1';
       --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
       c_row c_job%rowtype;
begin
       for c_row in c_job loop
dbms_output.put_line('select * from bd_invcl where invclasscode like '''||c_row.invclasscode||'%''');

 BEGIN
execute immediate 'select * from bd_invcl where invclasscode like '''||c_row.invclasscode||'%''';
commit;
 END;
 
       end loop;
end;bms_output.put_line 这个可以正常输出execute immediate 这个执行不了,也不报错

解决方案 »

  1.   

    问题是你想得到什么结果。想让他输出什么呢?想打印查询结果列表?
    如果想校验结果,你可以换成 insert等查看结果。
      

  2.   

    在 PLSQL 中:
    select 要有 into 子句,或者这是一个游标。
      

  3.   

    dbms_output是输出字符串,所以你可以直接写select * from ...
    execute immediate 这是执行动态SQL,不能直接写select * from ...,只能是select * into *** from ....你这句动态SQL想干嘛?完全看不懂,想要返回结果集?
    另外SELECT后面不需要COMMIT, 都没有更新数据。
      

  4.   


    我试试,之前用的mssql 直接execute 就可以出结果,
    刚换到oracle ,还不太熟悉
      

  5.   

    1.必须定义两个变量去接收输出的值:
     select invclasscode,invclassname from bd_invcl where forinvname='1'
    2.必须定义一个游标
    select * from bd_invcl where invclasscode like