<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 聯盟

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一线产区二线产区区| 亚洲av永久无码制服河南实里| 亚洲黄色片在线观看| 最近2019中文免费字幕在线观看 | 84pao国产成视频免费播放| 亚洲大尺度无码专区尤物| 国产精品免费在线播放| 国产亚洲成人在线播放va| 精品免费AV一区二区三区| 免费看国产曰批40分钟| 精品久久久久亚洲| 免费a级毛片永久免费| 九九视频高清视频免费观看| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 成人免费的性色视频| 亚洲一区二区三区久久久久| 四虎精品视频在线永久免费观看| 亚洲精品自在线拍| 免费观看无遮挡www的小视频| 亚洲综合偷自成人网第页色| 啦啦啦在线免费视频| 老司机亚洲精品影院在线观看| 四虎永久免费地址在线观看| sss日本免费完整版在线观看| 亚洲人成人网站色www| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 亚洲AV无码乱码在线观看裸奔 | 亚洲xxxx18| 国产jizzjizz免费视频| 亚洲精品视频免费 | 中文字幕人成无码免费视频| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | yy6080久久亚洲精品| XXX2高清在线观看免费视频| 亚洲欧洲免费视频| 免费高清在线爱做视频| 成人免费一区二区三区| 亚洲一区二区久久| 久久精品国产亚洲精品| 日本卡1卡2卡三卡免费| 亚洲国产精品无码久久九九大片|