好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Oracle 存儲過程教程

Oracle 存儲過程教程

熱門標簽:貴陽智能電銷機器人官網 地圖標注付款了怎么找不到了 北京營銷外呼系統廠家 百度地圖標注員是干什么 外呼系統鄭州 外呼系統口號 溫州人工外呼系統 沈陽400電話是如何辦理 北京外呼系統公司排名
Oracle分頁存儲過程的思路于sqlserver的思路是一樣的,但是我這里做了點改動,在因為Oracle的語法和規則的不同所以,Oracle分頁存儲過程看上去有點不一樣。見笑,見笑!
在Oracle的存儲過程中返回記錄集,需要用到游標變量,Oracle不能像sqlserver那樣可以直接返回一個記錄集。
由于設想在.net中把復雜的sql語句生成,所以在存儲過程中沒有去考慮生成sql語句的問題。
以下是在Oracle中實現的分頁存儲過程。
復制代碼 代碼如下:

create or replace package DotNet is
-- Author : good_hy
-- Created : 2004-12-13 13:30:30
-- Purpose :
TYPE type_cur IS REF CURSOR; --定義游標變量用于返回記錄集
PROCEDURE DotNetPagination(
Pindex in number, --分頁索引
Psql in varchar2, --產生dataset的sql語句
Psize in number, --頁面大小
Pcount out number, --返回分頁總數
v_cur out type_cur --返回當前頁數據記錄
);
procedure DotNetPageRecordsCount(
Psqlcount in varchar2, --產生dataset的sql語句
Prcount out number --返回記錄總數
);
end DotNot;
create or replace package body DotNet is
--***************************************************************************************
PROCEDURE DotNetPagination(
Pindex in number,
Psql in varchar2,
Psize in number,
Pcount out number,
v_cur out type_cur
)
AS
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 rn 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 DotNot;

以下是在.net中調用Oracle分頁存儲過程的步驟。
在.net調用返回記錄集的存儲過程,需要用到datareader,但是datareader不支持在datagrid中的分頁,因此需要利用datagrid自定義分頁功能。
復制代碼 代碼如下:

rotected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Dim conn As New OracleClient.OracleConnection()
Dim cmd As New OracleClient.OracleCommand()
Dim dr As OracleClient.OracleDataReader
Private Sub gridbind(ByVal pindex As Integer, ByVal psql As String, Optional ByVal psize As Integer = 10)
conn.ConnectionString = "Password=gzdlgis;User ID=gzdlgis;Data Source=gzgis"
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
conn.Open()
'------------------------------------------------------------------------------------
cmd.CommandText = "DotNot.DotNetPageRecordsCount"
'------------------------------------------------------------------------------------
cmd.Parameters.Add("psqlcount", OracleType.VarChar).Value = psql
cmd.Parameters.Add("prcount", OracleType.Number).Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()
Me.DataGrid1.AllowPaging = True
Me.DataGrid1.AllowCustomPaging = True
Me.DataGrid1.PageSize = psize
Me.DataGrid1.VirtualItemCount = cmd.Parameters("prcount").Value
cmd.Parameters.Clear()
'------------------------------------------------------------------------------------
cmd.CommandText = "DotNot.DotNetPagination"
'------------------------------------------------------------------------------------
cmd.Parameters.Add("pindex", Data.OracleClient.OracleType.Number).Value = pindex
cmd.Parameters.Add("psql", Data.OracleClient.OracleType.VarChar).Value = psql '"select rownum rn,t.* from cd_ssxl t"
cmd.Parameters.Add("psize", Data.OracleClient.OracleType.Number).Value = psize
cmd.Parameters.Add("v_cur", Data.OracleClient.OracleType.Cursor).Direction = ParameterDirection.Output
cmd.Parameters.Add("pcount", Data.OracleClient.OracleType.Number).Direction = ParameterDirection.Output
dr = cmd.ExecuteReader()
Me.DataGrid1.DataSource = dr
Me.DataGrid1.DataBind()
dr.Close()
conn.Close()
Response.Write("總計頁數 " cmd.Parameters("pcount").Value)
End Sub
----------------------------------------------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
Dim psql As String = "select rownum rn,t.* from cd_ssxl t"
gridbind(0, psql, 20)
End If
End Sub
---------------------------------------------------------------------------------------
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
Dim psql As String = "select rownum rn,t.* from cd_ssxl t"
Me.DataGrid1.CurrentPageIndex = e.NewPageIndex
gridbind(e.NewPageIndex, psql, 20)
End Sub
您可能感興趣的文章:
  • oracle分頁存儲過程 oracle存儲過程實例
  • java調用Oracle存儲過程的方法實例
  • Oracle存儲過程基本語法介紹
  • oracle 存儲過程和函數例子
  • Oracle 存儲過程總結 二、字符串處理相關函數
  • Oracle 存儲過程總結(一、基本應用)
  • oracle 存儲過程詳細介紹(創建,刪除存儲過程,參數傳遞等)

標簽:溫州 衢州 通遼 潮州 包頭 淮北 定西 衡水

巨人網絡通訊聲明:本文標題《Oracle 存儲過程教程》,本文關鍵詞  Oracle,存儲,過程,教程,Oracle,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 存儲過程教程》相關的同類信息!
  • 本頁收集關于Oracle 存儲過程教程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 韩国色网站| 国产精品久久久久久久电影渣男| 亚洲AV秘?无码一区二区三探花| 老鸭窝黄色| 亚洲精品电影久久久影院| 国产乡下妇女做爰毛片村妓| 被俩个黑人前后破苞的女人| 2021久久精品国产99国产| 歪歪漫画H漫画在线入口| 国产精品久草| 99这里只有精品| 口述很黄很乱小说| 短篇色情亂伦小说合集苏老师| 51XX福利午夜电影网| 欧美日韩一区二区三区高清不卡| 老公顶到了好痛?嗯?轻一点怀孕| 播播私人影院| 国产全部视频| 久久精品国产清白在天天线| 8?8?海外华人免费入口| 黑人巨大精品欧美一区二区免费| 调教制服丝袜女警花| 精品99re66一区三区| 成人免费动漫在线看网站| 精品亚洲一区二区三区四区五区高 | 天堂电影免费在线观看| 国产农村精品一级毛片视频| 亚洲AV永久无码国产精品久久| 99久久www免费| 久久香蕉热| 美女靠比| 女教师被婬辱の教室XXX| 国产露脸对白刺激2022 | 欧美日韩国产一区二区| 美女被搞基| 日本在线一区二区三区| 亚洲精品久久久蜜桃| 俄罗斯毛片无码免费视频| a级毛片免费观看网站| 911精品国产AⅤ一区二区在线观看| 七月婷婷在线视频综合|