刚从SQL server 转oracle 发现oracle不支持很多sql server的特性
1:比如我想在oracle的存储过程中返回一个结果集 查的很多资料 在oracle中 只能使用游标 但是数据量一大使用游标是非常慢的 有很好的方式么?
2: 在sql server 中可以在一次数据库连接中执行多个select语句返回多个结果集 而在oracle中在数据库中要用;结束语句
在程序里我通用使用;去执行他报错说未定义的字符串 就是;出的问题 ?
那只能一次数据库连接去得到一个结果集 这个一个页面中需要多次的去连接数据库
这样是哦非常消耗资源的
各位什么好的方法么 ?
1:比如我想在oracle的存储过程中返回一个结果集 查的很多资料 在oracle中 只能使用游标 但是数据量一大使用游标是非常慢的 有很好的方式么?
2: 在sql server 中可以在一次数据库连接中执行多个select语句返回多个结果集 而在oracle中在数据库中要用;结束语句
在程序里我通用使用;去执行他报错说未定义的字符串 就是;出的问题 ?
那只能一次数据库连接去得到一个结果集 这个一个页面中需要多次的去连接数据库
这样是哦非常消耗资源的
各位什么好的方法么 ?
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>
现在换oracle 但是我们发现不能再一次连接解决我们的问题了
我们使用。NET 每次数据库连接的资源就很宝贵
但是并不是返回一个数据集后就要关闭一个连接,然后下一次再建立连接,
况且现在一般WEB应用都是使用连接池的,在WEB服务器不关闭的情况下是不会关闭连接的,
一次返回多个数据集与多次返回多个数据集差别是不大的。