刚从SQL server 转oracle 发现oracle不支持很多sql server的特性
1:比如我想在oracle的存储过程中返回一个结果集 查的很多资料 在oracle中 只能使用游标  但是数据量一大使用游标是非常慢的   有很好的方式么?
2: 在sql server 中可以在一次数据库连接中执行多个select语句返回多个结果集  而在oracle中在数据库中要用;结束语句
在程序里我通用使用;去执行他报错说未定义的字符串  就是;出的问题  ?
那只能一次数据库连接去得到一个结果集 这个一个页面中需要多次的去连接数据库
这样是哦非常消耗资源的  
各位什么好的方法么   ?

解决方案 »

  1.   

    1、一次要取到客户端数据太多,都会较慢。
    2、返回多个数据集
    SQL> CREATE OR REPLACE PROCEDURE p_dataset(o1 OUT SYS_REFCURSOR, o2 OUT SYS_REFCURSOR) IS
      2  BEGIN
      3    OPEN o1 FOR
      4      SELECT deptno,dname FROM dept;
      5    OPEN o2 FOR
      6      SELECT deptno,empno,ename FROM emp;
      7  END;
      8  /过程已创建。SQL> var o1 refcursor;
    SQL> var o2 refcursor;
    SQL> exec p_dataset(:o1,:o2);PL/SQL 过程已成功完成。SQL> print o1;    DEPTNO DNAME
    ---------- --------------
            10 ACCOUNTING
            20 RESEARCH
            30 SALES
            40 OPERATIONSSQL> print o2;    DEPTNO      EMPNO ENAME
    ---------- ---------- ----------
            20       7369 SMITH
            30       7499 ALLEN
            30       7521 WARD
            20       7566 JONES
            30       7654 MARTIN
            30       7698 BLAKE
            10       7782 CLARK
            20       7788 SCOTT
            10       7839 KING
            30       7844 TURNER
            20       7876 ADAMS    DEPTNO      EMPNO ENAME
    ---------- ---------- ----------
            30       7900 JAMES
            20       7902 FORD
            10       7934 MILLER已选择14行。SQL> 
      

  2.   

    我们目前要做一大型电子商务平台以前使用SQL SERVER 每个页面都调用一存储过程或者是多条SQL语句 一次返回几个结果集   就是说只用一次数据库连接 
    现在换oracle  但是我们发现不能再一次连接解决我们的问题了   
    我们使用。NET  每次数据库连接的资源就很宝贵
      

  3.   

    一般来说数据建立一个连接是比较慢,
    但是并不是返回一个数据集后就要关闭一个连接,然后下一次再建立连接,
    况且现在一般WEB应用都是使用连接池的,在WEB服务器不关闭的情况下是不会关闭连接的,
    一次返回多个数据集与多次返回多个数据集差别是不大的。