- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的包体中有一个过程:
create or replace package body MYPACKAGE is
procedure "GetAllRules"(p_rules out sys_refcursor)
is
begin
open p_rules for
select * from my_rules;
end "GetAllRules";
-- etc
我在我的包规范中公开了这一点。
如何在 PL SQL Developer(或类似工具)的新 SQL 窗口中执行此过程?
最佳答案
您可以相对轻松地执行该过程
DECLARE
l_rc sys_refcursor;
BEGIN
mypackage."GetAllRules"( l_rc );
END;
当然,这只是将光标返回给调用应用程序。它不会执行任何从游标中获取数据、对该数据执行某些操作或关闭游标的操作。假设您的目标是将一些数据写入 dbms_output
(这有时对原型(prototype)设计很有用,但不是生产代码应该依赖的东西),您可以做类似的事情
DECLARE
l_rc sys_refcursor;
l_rec my_rules%rowtype;
BEGIN
mypackage."GetAllRules"( l_rc );
LOOP
FETCH l_rc INTO l_rec;
EXIT WHEN l_rc%NOTFOUND;
dbms_output.put_line( <<print data from l_rec>> );
END LOOP;
CLOSE l_rc;
END;
如果你真的在 PL/SQL 中用游标做这样的事情,我强烈建议返回一个强类型的引用游标而不是弱类型的引用游标,这样你就可以根据cursor 的 %rowtype
而不是强制调用者确切知道要声明的类型并希望过程中的查询不会更改。这还需要您显式编写代码来显示令人讨厌的数据。
如果您正在使用 SQL*Plus(或支持某些 SQL*Plus 命令的东西),您可以稍微简化一下
VARIABLE rc REFCURSOR;
EXEC mypackage."GetAllRules"( :rc );
PRINT :rc;
顺便说一句,我不喜欢使用区分大小写的标识符。每次你想调用它时,都必须用双引号将 "GetAllRules"
之类的标识符括起来,这已经很老了。除非你有真正令人信服的理由,否则我建议使用标准的不区分大小写的标识符。在您的代码中合理地使用大写标识符是完全合理的,当然,强制它们在数据字典中区分大小写的努力没有多大意义。
关于sql - 如何使用 out sys_refcursor 参数执行 oracle 过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028914/
我会打电话 procedure或 function从 java 使用 JDBC . 在最佳实践和性能方面,最好使用 function返回 SYS_REFCURSOR或使用 procedure返回 SY
我可以使用普通游标的值打开 sys_refcursor 吗? create or replace procedure test(C1 out sys_refcursor) Lv_c1 as
我可以使用普通游标的值打开 sys_refcursor 吗? create or replace procedure test(C1 out sys_refcursor) Lv_c1 as
CREATE OR REPLACE PROCEDURE GetEmployeesInDept( c OUT SYS_REFCURSOR) 我有一个与上述存储过程相关的查询,也就是说,在定义光标
甲骨文 11g 这似乎比它应该的更难,所以我可能在这里走错了路。 我有一个生成用户定义表单的应用程序,我的数据比这更复杂,但想法是——我有一个数据表,其中包含从用户定义的表单输入的所有数据 creat
我有一个带有选择值的游标,我想在取决于我是否找到任何行之后做一些事情。 recs_Table SYS_REFCURSOR; begin open recs_Table for s
我有点被困在这里了。我在 Oracle 中有一个愚蠢的小函数,并尝试用 Java 访问它。返回值应该是 SYS_REFCURSOR。但如果我尝试用 Java 调用它,就会出现错误。 这是 Oracle
下面的 W.r.t 代码我不能将 fetch-into-variable 的类型声明为基础表的 %ROWTYPE,因为 SYS_REFCURSOR 位于连接两个表的选择上,并且还选择了一些在基础两个表
我正在使用 Oracle 12c。在 PL/SQL 我可以做到这一点 set serveroutput on declare begin for x in (select 1 as y from
所以我有一个存储过程ONE create or replace PROCEDURE ONE ( A in number B in number ... ZZ out SYS_R
我正在使用 Oracle 12g,并尝试从 SYS_REFCURSOR 获取 ResultSet 我有一个带有以下签名的过程: CREATE OR REPLACE PROCEDURE proc_sea
这可能有点傻,但我想知道这是否可能。 我有一个返回 sys_refcursor 的函数 CREATE OR REPLACE FUNCTION get_employee_details(p_emp_no
我正在尝试通过 Entity Framework 访问 Oracle 11g 上的存储过程。我可以访问返回标量和返回正确值的存储过程。但是当使用 SYS_REFCURSOR 用于返回结果集,函数导入时
我有一个 PL/SQL 包,它根据您传递的 id 返回一个 sys_refcursor。我想遍历一些 id 并创建一个新的 ref 游标,其中包含为每个 id 重复的原始结果集中的一列。 (类似于交叉
我的包体中有一个过程: create or replace package body MYPACKAGE is procedure "GetAllRules"(p_rules out
我正在尝试使用 PLSQL 存储过程获取行,并将它们保存到 JPA 实体中。我正在使用ojbdc7 , spring-boot-starter-data-jpa和spring-boot 2.2.1 .
我的包体中有一个过程: create or replace package body MYPACKAGE is procedure "GetAllRules"(p_rules out
是否可以在 plsql 中执行动态 sql 并将结果返回到 sys_refcursor 中?到目前为止,我已经粘贴了我的尝试,但无法正常工作,这是我通过我的 java 应用程序遇到的错误 ORA-01
我想使用 JPA 调用带有 SYS_REFCURSOR 的过程,如 OUT 参数。使用普通 JDBC 非常容易,但我不确定这在 JPA 中是否可行。 我的程序如下: CREATE OR REPLACE
我有一个像这样的(简化的)Oracle SQL: declare xd number; xm number; DataOut sys_refcursor; begin xd := to
我是一名优秀的程序员,十分优秀!