我有一个PL/SQL包,在这个包中,我要声明一个select状态,它被其他不同的包使用。所以我想办法。首先,我定义了一个游标,它可以从其他包中调用并存储select。第二种方法是存储select的过程。
有人能告诉我每种方法的优缺点吗?我的教授说,光标是老的,状态良好,今天没有人使用这个。我的主厨告诉我游标的迭代速度更快,你可以制作它的类型。
谁能告诉我这里的最佳做法是什么?
例如:
CURSOR crs_active_customer IS
SELECT * FROM customer where status = 'active'或
PROCEDURE prc_getActiveCustomer IS
BEGIN
SELECT * FROM customer where status = 'active';
END prc_getActiveCustomer;存储select语句的更好方法是什么?
发布于 2015-09-02 12:34:48
PL/SQL 101去营救!来自使用游标
Oracle PL/SQL语言的主要目的是使查询和更改数据库中表的内容尽可能简单和高效。当然,您必须使用SQL语言访问表,每次访问时都使用游标来完成工作。
因此,每次在PL/SQL中使用SQL时,都会有一个游标。下一个问题是有什么样的游标以及何时使用它们。上述文章也涉及到这一主题。
您还可以阅读精细的手册:游标
游标是指向私有SQL区域的指针,该区域存储有关处理特定SELECT或DML语句的信息。
然后继续阅读隐含游标和显式游标。
接下来找个更好的教授。
发布于 2015-09-03 20:06:15
每次调用游标实例时,我都会编写一个返回新游标实例的函数。包中的游标变量实际上是一个全局变量:一次只能使用一个过程。这可能就是你的教授所指的问题。
拥有一个全局游标意味着,如果您编写一个过程,在扫描该游标的结果时调用另一个内部需要使用相同游标的函数,则会遇到“游标已经打开”的错误。
https://stackoverflow.com/questions/32347533
复制相似问题