<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    SQL Server 分頁過程

    SQL?Server?分頁過程

    -----------------------------------------------------
    -- Export file for user SA???????????????????????? --
    -- Created by Administrator on 2005-1-30, 18:05:12 --
    -----------------------------------------------------

    spool asdsd.log

    prompt
    prompt Creating table TEST
    prompt ===================
    prompt
    create table TEST
    (
    ? NAME?? VARCHAR2(20),
    ? PASSWD VARCHAR2(20)
    )
    tablespace USERS
    ? pctfree 10
    ? initrans 1
    ? maxtrans 255
    ? storage
    ? (
    ??? initial 64K
    ??? minextents 1
    ??? maxextents unlimited
    ? );

    prompt
    prompt Creating package DOTNET
    prompt =======================
    prompt
    create or replace package DotNet as

    ? TYPE type_cur IS REF CURSOR;???? --定義游標變量用于返回記錄集

    ? PROCEDURE DotNetPagination(
    ? Pindex in varchar2,??????????????? --分頁索引
    ? Psize in varchar2,???????????????? --頁面大小
    ? Psql in varchar2,??????????????? --產生dataset的sql語句
    ? Pcount out number,?????????????? --返回分頁總數
    ? v_cur out type_cur?????????????? --返回當前頁數據記錄
    ? );
    ?
    ? PROCEDURE DotNetPageRecordsCount(
    ? Psqlcount in varchar2,
    ? Prcount?? out number
    ? );
    ?
    end DotNet;
    /

    prompt
    prompt Creating package PKG_TEST
    prompt =========================
    prompt
    CREATE OR REPLACE PACKAGE pkg_test
    AS
    ?? TYPE myrctype IS REF CURSOR;

    ?? PROCEDURE get (p_id in NUMBER, p_rc OUT myrctype);
    END pkg_test;
    /

    prompt
    prompt Creating package PKG_TEST_FUNCTION
    prompt ==================================
    prompt
    create or replace package pkg_test_function as
    /* 定義ref cursor類型
    ??? 不加return類型,為弱類型,允許動態sql查詢,
    ??? 否則為強類型,無法使用動態sql查詢;
    */
    ?? type myrctype is ref cursor;?
    ??
    --函數申明
    ?? function get(intID number) return myrctype;
    end pkg_test_function;
    /

    prompt
    prompt Creating procedure DOTNETPAGINATION
    prompt ===================================
    prompt
    CREATE OR REPLACE PROCEDURE dotnetpagination (
    ????? pindex?? IN?????? number,
    ????? psize??? IN?????? number,
    ????? psql???? IN?????? VARCHAR2,
    ????? pcount?? OUT????? NUMBER
    ?? )
    ?? IS
    ????? v_sql???? VARCHAR2 (1000);
    ????? v_count?? NUMBER;
    ????? v_plow??? NUMBER;
    ????? v_phei??? NUMBER;
    ?? BEGIN
    ------------------------------------------------------------取分頁總數
    ????? v_sql := 'select count(*) from (' || psql || ')';

    ????? EXECUTE IMMEDIATE v_sql
    ?????????????????? INTO v_count;
    ????? pcount := CEIL (v_count / psize);
    ------------------------------------------------------------顯示任意頁內容
    ????? v_phei := pindex * psize + psize;
    ????? v_plow := v_phei - psize + 1;

    ?? END dotnetpagination;
    /

    prompt
    prompt Creating package body DOTNET
    prompt ============================
    prompt
    CREATE OR REPLACE PACKAGE BODY dotnet
    AS
    --***************************************************************************************
    ?? PROCEDURE dotnetpagination (
    ????? pindex?? IN?????? VARCHAR2,
    ????? psize??? IN?????? VARCHAR2,
    ????? psql???? IN?????? VARCHAR2,
    ????? pcount?? OUT????? NUMBER,
    ????? v_cur??? OUT????? type_cur
    ?? )
    ?? IS
    ????? v_sql???? VARCHAR2 (1000);
    ????? v_count?? NUMBER;
    ????? v_plow??? NUMBER;
    ????? v_phei??? NUMBER;
    ?? BEGIN
    ------------------------------------------------------------取分頁總數
    ????? v_sql := 'select count(*) from (' || psql || ')';

    ????? EXECUTE IMMEDIATE v_sql
    ?????????????????? INTO v_count;
    ????? pcount := CEIL (v_count / psize);
    ------------------------------------------------------------顯示任意頁內容
    ????? v_phei := pindex * psize + psize;
    ????? v_plow := v_phei - psize + 1;
    ????? --Psql := 'select rownum rn,t.* from cd_ssxl t' ;??????????? --要求必須包含rownum字段
    ????? v_sql :='select * from ('|| psql || ') where rownum between '|| v_plow || ' and ' || v_phei;

    ????? OPEN v_cur FOR v_sql;
    ?? END dotnetpagination;

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

    ?procedure DotNetPageRecordsCount(
    ? Psqlcount in varchar2,
    ? Prcount?? out number
    ? )
    ? as

    ?? v_sql varchar2(1000);
    ?? v_prcount number;

    ? begin

    ?? v_sql := 'select count(*) from (' || Psqlcount || ')';
    ?? execute immediate v_sql into v_prcount;
    ?? Prcount := v_prcount;????????????????? --返回記錄總數

    ? end DotNetPageRecordsCount;

    ?--**************************************************************************************
    END dotnet;
    /

    prompt
    prompt Creating package body PKG_TEST
    prompt ==============================
    prompt
    CREATE OR REPLACE PACKAGE BODY pkg_test
    AS
    ?? PROCEDURE get (p_id in NUMBER, p_rc OUT myrctype)
    ?? IS
    ????? sqlstr?? VARCHAR2 (500);
    ?? BEGIN
    ????? IF p_id = 0
    ????? THEN
    ???????? OPEN p_rc FOR
    ??????????? SELECT phone, msg_content, gateid
    ????????????? FROM wwchat_del_log
    ???????????? WHERE ROWNUM < 100;
    ????? ELSE
    ???????? sqlstr :=
    ??????????? 'SELECT phone,msg_content,gateid FROM wwchat_del_log where rownum<100';

    ???????? OPEN p_rc FOR sqlstr USING p_id;
    ????? END IF;
    ?? END get;
    END pkg_test;
    /

    prompt
    prompt Creating package body PKG_TEST_FUNCTION
    prompt =======================================
    prompt
    CREATE OR REPLACE PACKAGE BODY pkg_test_function
    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 phone, msg_content, gateid
    ????????????? FROM wwchat_del_log
    ???????????? WHERE ROWNUM < 100;
    ????? 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_function;
    /

    posted on 2006-06-01 16:40 【Xine】中文站 閱讀(255) 評論(0)  編輯  收藏 所屬分類: SQL Server

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(8)

    隨筆分類(40)

    隨筆檔案(40)

    文章分類(33)

    文章檔案(34)

    相冊

    BLOG 聯盟

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码中文在线二区免费| 国产va精品免费观看| 亚洲中文字幕无码一去台湾 | 在线免费观看国产视频| 小日子的在线观看免费| 羞羞漫画小舞被黄漫免费| 亚洲精华液一二三产区| 2022年亚洲午夜一区二区福利| 免费一级黄色毛片| 国产在线观看www鲁啊鲁免费| 无码av免费毛片一区二区| 一级毛片aaaaaa免费看| 久久久免费观成人影院| 美女裸体无遮挡免费视频网站| 亚洲精品国产精品国自产网站| 亚洲宅男永久在线| 精品亚洲aⅴ在线观看| 亚洲国产美女视频| 亚洲国产午夜电影在线入口| 亚洲精品中文字幕无乱码| 亚洲一区影音先锋色资源| 久久精品国产亚洲AV久 | 免费人成黄页在线观看日本| 国产精品免费久久| 免费成人在线电影| 国产一卡二卡四卡免费| 女人被男人桶得好爽免费视频| 99久久久精品免费观看国产 | 亚洲av无码专区在线| 无码天堂亚洲国产AV| 久久久久久国产a免费观看不卡| 成人免费区一区二区三区| 在线看免费观看AV深夜影院 | 亚洲国产精品自在自线观看| 一出一进一爽一粗一大视频免费的| 国产无遮挡裸体免费视频在线观看| 九九精品免费视频| 亚洲乳大丰满中文字幕| 亚洲AV成人影视在线观看| 人妻在线日韩免费视频| 成人在线免费观看|