• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Oracle中返回结果集的存储过程分享
    Oracle不像SQLServer那样在存储过程中用Select就可以返回结果集,而是通过Out型的参数进行结果集返回的。实际上是利用REF CURSOR
    复制代码 代码如下:

    --procedure返回记录集:
    ----------------------声明一个Package--------------
    CREATE OR REPLACE PACKAGE pkg_test
    AS
    TYPEmyrctypeIS REF CURSOR;

    PROCEDURE get_r(p_id NUMBER,p_rc OUT myrctype); --Package中声明名为get 的Procedure(只有接口没内容)
    END pkg_test;

    -----------------声明Package Body,即上面Package中的内容,包括Procedure get---------------------
    CREATE OR REPLACE PACKAGE BODY pkg_test
    AS
    PROCEDURE get_r(p_id NUMBER,p_rc OUT myrctype)
    IS
    sqlstr VARCHAR2 (500);
    BEGIN
    IF p_id = 0 THEN
    OPEN p_rc FOR
    SELECT ID, NAME, sex, address, postcode, birthday
    FROM student;
    ELSE
    sqlstr :=
    'select id,name,sex,address,postcode,birthday
    from student where id=:w_id'; --w_id是个参数,
    --以下 p_rc是个REF CURSOR游标类型,而且是OUT型参数,即可返回一个记录集了。USING p_id就是替换上面SQL中:w_id值拉:)
    OPEN p_rc FOR sqlstr USING p_id; 
    END IF;
    END get;
    END pkg_test;

    --function返回记录集的例子,原理和上面相同,而是用function的return值来返回记录集。

    函数返回记录集:
    建立带ref cursor定义的包和包体及函数:
    复制代码 代码如下:

    CREATE OR REPLACE
    package pkg_test as

    type myrctype is ref cursor;
    function get_r(intID number) return myrctype;
    end pkg_test;
    /
    CREATE OR REPLACE
    package body pkg_test as
    --函数体
    function get_r(intID number) return myrctype is
    rc myrctype; --定义ref cursor变量
    sqlstr varchar2(500);
    begin
    if intID=0 then

    --静态测试,直接用select语句直接返回结果
    open rc for select id,name,sex,address,postcode,birthday from student;
    else
    --动态sql赋值,用:w_id来申明该变量从外部获得
    sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
    --动态测试,用sqlstr字符串返回结果,用using关键词传递参数
    open rc for sqlstr using intid;
    end if;
    return rc;
    end get;
    end pkg_test;
    您可能感兴趣的文章:
    • Oracle存储过程基本语法介绍
    • Oracle存储过程返回游标实例详解
    • oracle存储过程中return和exit区别概述及测试
    • Oracle中 关于数据库存储过程和存储函数的使用
    • Oracle存储过程的编写经验与优化措施(分享)
    • java调用Oracle存储过程的方法实例
    • oracle存储过程创建表分区实例
    • oracle如何恢复被覆盖的存储过程
    • oracle数据库中查看系统存储过程的方法
    • oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
    • oracle存储过程常用的技巧(详)
    上一篇:oracle数据库下统计专营店的男女数量的语句
    下一篇:Oracle中Union与Union All的区别(适用多个数据库)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Oracle中返回结果集的存储过程分享 Oracle,中,返回,结果,集,的,