首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle:使用过程或光标来存储Select-语句?

问Oracle:使用过程或光标来存储Select-语句?
EN

Stack Overflow用户
提问于 2015-09-02 07:54:28
回答 2查看 667关注 0票数 0

我有一个PL/SQL包,在这个包中,我要声明一个select状态,它被其他不同的包使用。所以我想办法。首先,我定义了一个游标,它可以从其他包中调用并存储select。第二种方法是存储select的过程。

有人能告诉我每种方法的优缺点吗?我的教授说,光标是老的,状态良好,今天没有人使用这个。我的主厨告诉我游标的迭代速度更快,你可以制作它的类型。

谁能告诉我这里的最佳做法是什么?

例如:

代码语言:javascript
复制
CURSOR crs_active_customer IS
 SELECT * FROM customer where status = 'active'

或

代码语言:javascript
复制
PROCEDURE prc_getActiveCustomer IS
BEGIN
 SELECT * FROM customer where status = 'active';
END prc_getActiveCustomer;

存储select语句的更好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-02 12:34:48

PL/SQL 101去营救!来自使用游标

Oracle PL/SQL语言的主要目的是使查询和更改数据库中表的内容尽可能简单和高效。当然,您必须使用SQL语言访问表,每次访问时都使用游标来完成工作。

因此,每次在PL/SQL中使用SQL时,都会有一个游标。下一个问题是有什么样的游标以及何时使用它们。上述文章也涉及到这一主题。

您还可以阅读精细的手册:游标

游标是指向私有SQL区域的指针,该区域存储有关处理特定SELECT或DML语句的信息。

然后继续阅读隐含游标和显式游标。

接下来找个更好的教授。

票数 0
EN

Stack Overflow用户

发布于 2015-09-03 20:06:15

每次调用游标实例时,我都会编写一个返回新游标实例的函数。包中的游标变量实际上是一个全局变量:一次只能使用一个过程。这可能就是你的教授所指的问题。

拥有一个全局游标意味着,如果您编写一个过程,在扫描该游标的结果时调用另一个内部需要使用相同游标的函数,则会遇到“游标已经打开”的错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32347533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档