请教大家关于Oracle的一些问题?

xiaowangtian1117 2005-08-02 03:12:17
在Oracle的存储过程中如果要返回一个数据集(也就是一个Table)必须要用到游标,游标是不是必须在包里定义,能不能在一个系统中只定义一个游标,所有的存储过程要返回数据集都用这一个游标,但会不会产生两个以上用户同时要返回数据集时数据有误?还有请问大家在写Oracle存储过程时有什么经验没有?
请问怎样得到一个存储过程和包的输入输出参数属性?在SQL中是
select PARAMETER_NAME,PARAMETER_MODE,DATA_TYPE,NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_NAME='" +ProcedureName+ "' order by ORDINAL_POSITION

小弟第一次使用Oracle
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaowangtian1117 2005-08-03
  • 打赏
  • 举报
回复
但是我需要的是在Oracle中把捞到的数据集返回到应用程序中进行显示,如果不用游标还有没有好的办法?
我说的只定义一个游标是不想在包中包含存储过程的参数,
CREATE OR REPLACE PACKAGE "SCOTT"."HWTYPE" as
TYPE HWCURSOR IS REF CURSOR;
end;
CREATE OR REPLACE PROCEDURE "SCOTT"."PROC_TEST_CURSOR" (DDD OUT
HWTYPE.HWCURSOR)
as
begin

--这样可以动态设置游标了。
open DDD for SELECT DEPTNO,DNAME,LOC FROM DEPT;
end;
如上面所写在一个包中没有包含存储过程的参数,但在存储过程中可以直接使用定义的游标。不知道这样行不行?
如果只定义一个游标那么在有两个以上用户同时使用时会不会产生问题?因为一个用户已经使用了这个游标,并且这个游标处于打开状态?
njhart2003 2005-08-02
  • 打赏
  • 举报
回复
虽然oracle里可以在存储过程(函数)里返回一个记录集(游标),但我一般不这么做,我觉得,返回一个打开的游标是不好的习惯,再说即使有需要记录集的场合下,完全可以在存储过程里完成对该记录集的生成,并完成数据的处理。

一家之言,仅供参考。

你上面说的只定义一个游标,....

若其他存储过程在同一个包内的话,可以调用该游标的....
xiaowangtian1117 2005-08-02
  • 打赏
  • 举报
回复
还有能不能在包中只定义一个游标,不定义存储过程的一些参数,在其他的存储过程中用这个游标,比如:
CREATE OR REPLACE PACKAGE "SCOTT"."HWTYPE" as
TYPE HWCURSOR IS REF CURSOR;
end;
CREATE OR REPLACE PROCEDURE "SCOTT"."PROC_TEST_CURSOR" (DDD OUT
HWTYPE.HWCURSOR)
as
begin

--这样可以动态设置游标了。
open DDD for SELECT DEPTNO,DNAME,LOC FROM DEPT;
end;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧