zoukankan      html  css  js  c++  java
  • Oracle 存储过程返回结果集怎么这么费劲?

    From: http://www.cnblogs.com/attraction/archive/2004/06/04/13489.aspx

    存储过程返回记录集:
    CREATE OR REPLACE PACKAGE pkg_test
    AS
        TYPE myrctype IS REF CURSOR;
      
        PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
    END pkg_test;
    /
      
    CREATE OR REPLACE PACKAGE BODY pkg_test
    AS
        PROCEDURE get (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';
              OPEN p_rc FOR sqlstr USING p_id;
           END IF;
        END get;
    END pkg_test;

      
    函数返回记录集:
    建立带ref cursor定义的包和包体及函数:
    CREATE OR REPLACE
    package pkg_test as
    /* 定义ref cursor类型
        不加return类型,为弱类型,允许动态sql查询,
        否则为强类型,无法使用动态sql查询;
    */
       type myrctype is ref cursor;  
       
    --函数申明
       function get(intID number) return myrctype;
    end pkg_test;
    /
       
    CREATE OR REPLACE
    package body pkg_test as
    --函数体
        function get(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;
    /

  • 相关阅读:
    [HNOI2014]江南乐
    烦人的数学作业(数位dp)
    http2.0请求springboot接口
    01背包动态规划
    坑点总结
    [机房测试] 堆石子
    [机房测试] 出租车
    [机房测试] 下棋
    [机房测试] number
    [CSP-S2019] 树的重心
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/1884839.html
Copyright © 2011-2022 走看看