如何用Delphi4的TDbGrid 显示ORACLE存储过程返回的记录集

sujinfeng 2000-02-25 10:35:00
各位大虾:
本人刚从Delphi4+MsSql7开发转为Delphi4+Oracle8,开发过程中很多地方转不过弯来,望各位大虾指教,谢谢。
问题如下:
1、ORACLE8的过程或函数能否返回一个记录集?如果能,如何用Delphi4的TDbGrid 显示ORACLE存储过程返回的记录集。
2、ORACLE8中的光标是否可以添加、删除、修改记录,光标是否能往回滚动?
3、ORACLE8存储过程中能否创建临时表?该临时表用于在存储过程中暂时存放数据。在过程或函数结束时能自动删除。(如果您对MSSQL7的存储过程较熟悉,以上所说的临时表相当于MSSQL7存储过程中的#TempTable,其中#TempTable为表名,#说明此表是临时的,在存储过程结束时表#TempTable会自动消失,无须使用“Drop Table #TempTable”语句。)
4、何处有Delphi+Oracle开发的技术资料,好象挺难找料,好象挺难找
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbit 2000-11-29
  • 打赏
  • 举报
回复
我们有理由相信oracle。
如此定义一个类型(RETURN return_type在下面的例子中应该省略)
CREATE OR REPLACE PACKAGE cv_types AS
-- TYPE GenericCurTyp is REF CURSOR RETURN return_type;
TYPE GenericCurTyp is REF CURSOR;
END cv_types;
过程如此建立。
PROCEDURE open_cv (generic_cv IN OUT cv_types.GenericCurTyp, choice NUMBER) IS
BEGIN
IF choice = 1 THEN
OPEN generic_cv FOR SELECT * FROM emp;
ELSIF choice = 2 THEN
OPEN generic_cv FOR SELECT * FROM dept;
ELSIF choice = 3 THEN
OPEN generic_cv FOR SELECT * FROM salgrade;
END IF;
END;
注意:返回的游标必须是第一个参数,且要指明参数类型为ftCursor
相信对你会很有帮助。

不足:oracle现在不能返回动态SQL的查询结果。
但可以使用以下方法达到同样的效果
OPEN generic_cv FOR 'SELECT * FROM emp WHERE empid > '|| Parameter ;

前台使用TStoredProc
rabbit 2000-11-27
  • 打赏
  • 举报
回复
是啊,我也很想知道
pengpenghu 2000-10-20
  • 打赏
  • 举报
回复
关注。
heshengjie 2000-10-20
  • 打赏
  • 举报
回复
您的问题就是我现在想要知道的,我表示深切的慰问,同时关注这件事。^-^

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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