Declare  
  var_number         VARCHAR2(1000);
  var_tempSql         VARCHAR2(1000);
begin
  var_tempSql := 'select count(*) from DepartOrderTab';
execute immediate var_tempSql into var_number;
if var_number!=0 then
    dbms_output.put_line('DepartOrderTab');
    select *  from Librarytab;---这句话会报错,但我想看看这里面会执行出什么东西,可惜数据很多,而且字段个数很----多,怎么显示呀?如果使用sqlserver的查询分析器就能显示出来,可是oracle怎么显示呀?我用的PL/sql工具。直接打-----开一个sql脚本执行的语句。
  end if;
    
dbms_output.put_line('全部程序结束了。'|| var_number);
end;
疑问:如何在sql脚本里显示select结果集?

解决方案 »

  1.   

    代码段里面不能用select,除非要用游标
      

  2.   

    dbms_output.put_line()只能用这个输出
    在pl/sql中select *  from Librarytab 不能用
    要改成select a into v_a  from Librarytab;
      

  3.   

    首先要用打印的形式,先要打开serveroutset serverout on;
    打印游标可以在sqlplus的环境里用print方法。把游标作为返回,然后打印游标下面是个例子
    SQL> variable c refcursor;
    SQL> begin
      2  open :c for select * from user_tables;
      3  end;
      4  /PL/SQL 过程已成功完成。SQL> print :c;
      

  4.   

    如果需要使用select的话,要这么写。
    ...
    rc Librarytab%rowtype;
    select *  into rc from Librarytab where ...;
    ...需要注意的是你需要保证where命中两条以下的纪录。
      

  5.   

    DBMS_output有大小限制,用UTL包写到文件上
      

  6.   

    呵呵 楼主就别想着MSSQL里面方便的东西在ORACLE有了  
    专业数据库 啥都不会提供给你的 。
      

  7.   

    我一般都是把 出错的那段copy出来 在 SQL Window中执行一下 把该赋值的变量都赋上 看看到底是怎么回事
    呵呵 仅供参考 :)
      

  8.   

    要使用动态光标REF CURSOR返回结果集, 网上例子大把,paste一下学习几分钟就OK了.MS SQL的东东就是要比ORACLE好用.
      

  9.   

    CREATE OR REPLACE FUNCTION FUN_GETINFO()
        RETURN SYS_REFCURSOR IS
        /*
        */
        -- カーソルを宣言する
        TYPE_CUR   SYS_REFCURSOR;
    BEGIN
        ----------【 main 】----------    OPEN TYPE_CUR for 
             'SELECT t.USERNAME,
                     t.Address,
                     t.Tel
              FROM master T ';
       RETURN TYPE_CUR;
       
    END FUN_GETINFO;