`

sys_refcursor

 
阅读更多

 

 

create or replace procedure testprodurce is
  cursor c_row is
    select * from fpkj;
  ref_c_row sys_refcursor;
  --  ref_c_row 
  kplsh varchar2(200);
  kplx  number;
begin

  for tmp in c_row loop
    dbms_output.put_line(tmp.kplsh);
  end loop;

  /*
  execute immediate 'select kplsh,kplx from fpkj where kplx=:1'
    into ref_c_row
    using 2;
    
    不能into到cursor,只能类似count(*)into到number类型中
    */

  open ref_c_row for 'select kplsh,kplx from fpkj where kplx=:1'
    using 2;

  loop
    fetch ref_c_row
      into kplsh, kplx;
    exit when ref_c_row%notfound;
    dbms_output.put_line(kplsh || '---->' || kplx);
  end loop;

  close ref_c_row;

  declare
    ct_fpkj number;
  begin
    execute immediate 'select count(*) from fpkj where kplx=:1'
      into ct_fpkj
      using 2;
    dbms_output.put_line(ct_fpkj);
  end;
end testprodurce;

 

分享到:
评论

相关推荐

    oracle如何合并多个sys_refcursor详解

    在Oracle数据库环境中,合并多个`sys_refcursor`(也称为游标)的需求常常出现在复杂的业务逻辑中,尤其是在需要重复调用相同逻辑的存储过程时。本文将详细介绍如何通过序列化和XML处理来实现这一功能。 首先,让...

    Oracle游标的使用

    要使过程返回数据集,关键在于使用`OUT`类型的参数,并且该参数应为`sys_refCursor`系统引用游标类型。这样,过程可以在PL/SQL程序中将数据集作为输出传递给调用者。例如,在提供的示例中,`add_sal`过程接受一个...

    plsql.zip_PLSQL Developer_cursor

    v_refcursor SYS_REFCURSOR; BEGIN v_query := 'SELECT * FROM employees WHERE department_id = ' || dept_id; OPEN v_refcursor FOR v_query; RETURN v_refcursor; END; ``` 在这个函数中,我们动态构造了SQL...

    Oracle 存储过程分页

    CREATE OR REPLACE PROCEDURE get_paged_data (start_row IN NUMBER, page_size IN NUMBER, cursor OUT SYS_REFCURSOR) IS BEGIN OPEN cursor FOR SELECT * FROM ( SELECT t.*, ROWNUM rnum FROM your_table t...

    Oracle存储过程返回结果集

    而`SYS_REFCURSOR`是Oracle提供的一种特殊类型,它允许存储过程动态地打开一个游标(即结果集)并将其作为`OUT`参数返回。 以下是一个简单的存储过程示例,它打开一个游标并返回包含`employees`表所有列的结果集: ...

    ORACLE读取FTP上的EXCEL文件

    RETURN SYS_REFCURSOR IS L_SHEET VARCHAR2(30) := 'Sheet1'; L_QUERY VARCHAR2(200); L_CURSOR SYS_REFCURSOR; BEGIN L_QUERY := 'SELECT * FROM EXTERNAL ''(' || 'SELECT * FROM TABLE(READ_EXCEL_...

    Oracle Procedurl返回数据集的方式总结

    例如,过程定义为`PROCEDURE get_data(p_rc OUT SYS_REFCURSOR);`,然后在调用时捕获返回的游标。 - **记录类型**: 另一种方法是定义一个记录类型,该类型与REF CURSOR返回的列结构匹配,然后返回一个包含此记录...

    ORACLE 游标

    CREATE OR REPLACE FUNCTION get_salaries(deptno_in IN NUMBER) RETURN SYS_REFCURSOR IS cur_sal SYS_REFCURSOR; BEGIN OPEN cur_sal FOR SELECT sal FROM emp WHERE deptno = deptno_in; RETURN cur_sal; END...

    asp.net中oracle 存储过程(图文)

    此存储过程定义了三个输出参数:两个SYS_REFCURSOR类型的游标MYCS1和MYCS2,以及一个字符串类型的变量a。在存储过程中,它打开了两个游标,分别返回单列的1和2。 在ASP.NET中调用这个存储过程,可以使用Oracle .NET...

    oracle 在一个存储过程中调用另一个返回游标的存储过程

    第一种情况是返回的游标是某个具体的表或视图的数据,如: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;...

    Oracle数据库通用的分页存储过程

    p_data OUT SYS_REFCURSOR ) AS BEGIN OPEN p_data FOR SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT /*+ FIRST_ROWS(p_page_size) */ * FROM p_table_name WHERE p_where_clause ORDER BY p_column_...

    oracle 存储过程分页示例

    返回类型为`SYS_REFCURSOR`,它是一个游标,可以用于在PL/SQL块中处理查询结果。 内部的嵌套查询首先选择了所有的记录,但只保留了那些ROWNUM小于或等于`p_limit * p_page_num`的行。这确保了我们不会获取超过指定...

    oracle函数调用存储过程

    CREATE OR REPLACE PROCEDURE plan_station_contrast (p_start_date IN DATE, p_end_date IN DATE, o_cursor OUT SYS_REFCURSOR) AS BEGIN OPEN o_cursor FOR SELECT * FROM some_table WHERE date_column BETWEEN...

    hibernat调用过程和函数

    如果不需要使用包,可以直接使用 `SYS_REFCURSOR` 类型来代替 `TEST_PACKAGE.Test_CURSOR`,如下所示: ```sql CREATE OR REPLACE PROCEDURE P_TEST( P_CURSOR OUT SYS_REFCURSOR, VPOSTNO IN VARCHAR2 ) IS ...

    通用ORACLE存储过程实现分页和查询

    p_result OUT SYS_REFCURSOR ) IS v_query VARCHAR2(4000); BEGIN -- 创建一个新的查询,包含分页条件 v_query := 'SELECT * FROM (SELECT A.*, ROWNUM AS rn FROM (' || p_query || ') A WHERE ROWNUM <= :end_...

    oracle分页存储过程

    result OUT SYS_REFCURSOR ) AS BEGIN -- 查询逻辑 END get_paged_data; ``` 2. 在存储过程中构建分页查询:我们需要根据ROWNUM来构建SQL语句,考虑到我们可能需要跳过前一页的数据,因此实际的查询条件可能是`...

    Oracle自定义数据分页存储过程

    PROCEDURE GetPageData(p_TableName VARCHAR2, p_Condition VARCHAR2, p_StartRow NUMBER, p_Limit NUMBER, OUT PageData SYS_REFCURSOR); END pkg_Pager; / CREATE OR REPLACE PACKAGE BODY pkg_Pager AS ...

    Hibernate使用存储过程

    st_cursor SYS_REFCURSOR; BEGIN OPEN st_cursor FOR Select EMPLOYEE, EMPLOYER, STARTDATE, ENDDATE, REGIONCODE, EID, VALUE, CURRENCY FROM EMPLOYMENT; RETURN st_cursor; END; ``` 要在Hibernate中使用...

Global site tag (gtag.js) - Google Analytics