您的位置:首页 > 数据库 > Oracle

oracle 储存过程

2015-08-11 15:12 633 查看
create or replace procedure ZDS_GET_SHARELINKBYPAGE(PHONENUM   VARCHAR2,

                                                    USERID     VARCHAR2,

                                                    PAGE       NUMBER,

                                                    PAGESIZE   NUMBER,

                                                    REF_CURSOR OUT SYS_REFCURSOR) is

  /* 过程、函数简要描述信息

  **********************************************************

  *  存储过程名    : 根据手机号码或用户ID获得分享链接--分页

  *  建立日期      :

  *  作者          :

  *  模块          : 自电商

  *  输出参数      :REF_CURSOR

  *  备注             :

  *------------------------------------------------------------

  *  修改历史

  *  序号    日期             修改execute immediate人      修改原因

  *  1

  ************************************************************ */

  V_PHONENUM VARCHAR2(16) := PHONENUM; ----手机号码

  V_USERID   VARCHAR2(80) := USERID;--用户ID

  V_PAGE     NUMBER := PAGE; --页码

  V_PAGESIZE NUMBER := PAGESIZE; --每页行数

  V_START    NUMBER;

  V_END      NUMBER;

  V_SQL      VARCHAR2(1000);

begin

  V_START := (V_PAGE - 1) * V_PAGESIZE + 1;

  V_END   := V_PAGE * V_PAGESIZE;

  if (V_PHONENUM is not null and V_USERID is not null) then

    V_SQL := 'SELECT B.* FROM (SELECT ROWNUM AS XH, A.* FROM (SELECT * FROM ZDS_SHARE_LINK WHERE USERID  = ''' ||

             V_USERID || ''' and  PHONENUM

   = ''' || V_PHONENUM || ''') A) B WHERE B.XH <= ' || V_END ||

             ' AND B.XH >= ' || V_START || '';

  elsif V_PHONENUM is null then

    V_SQL := 'SELECT B.* FROM (SELECT ROWNUM AS XH, A.* FROM (SELECT * FROM ZDS_SHARE_LINK WHERE USERID  = ''' ||

             V_USERID || ''') A) B WHERE B.XH <= ' || V_END ||

             ' AND B.XH >= ' || V_START || '';

  elsif V_USERID is null then

    V_SQL := 'SELECT B.* FROM (SELECT ROWNUM AS XH, A.* FROM (SELECT * FROM ZDS_SHARE_LINK WHERE   PHONENUM

                          = ''' || V_PHONENUM ||

             ''') A) B WHERE B.XH <= ' || V_END || ' AND B.XH >= ' ||

             V_START || '';

  end if;

  --dbms_output.put_line(V_SQL);

  OPEN REF_CURSOR FOR V_SQL;
end ZDS_GET_SHARELINKBYPAGE;

根据  USERID   和 PHONENUM  进行分页查询 ,二者不可同时为空的查询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: