|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了oracle|存储历程|分页|oracle|存储历程|分页在看了浩瀚的分页存储历程今后发明都是针对sqlserver的,而没有oracle的,因而想写一个关于oracle的存储历程,由于我用到的数据库是oracle.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
oracle分页存储历程的思绪于sqlserver的思绪是一样的,可是我这里做了点修改,在由于oracle的语法和划定规矩的分歧以是,oracle分页
存储历程看上往有点纷歧样。见笑,见笑!
在oracle的存储过程当中前往纪录集,必要用到游标变量,oracle不克不及像sqlserver那样能够间接前往一个纪录集。
因为假想在.net中把庞大的sql语句天生,以是在存储过程当中没有往思索天生sql语句的成绩。
--------------------------------------------------------------------------------------------------------------------------------------
以下是在oracle中完成的分页存储历程。
createorreplacepackageDotNetis
--Author:good_hy
--Created:2004-12-1313:30:30
--Purpose:
TYPEtype_curISREFCURSOR;--界说游标变量用于前往纪录集
PROCEDUREDotNetPagination(
Pindexinnumber,--分页索引
Psqlinvarchar2,--发生dataset的sql语句
Psizeinnumber,--页面巨细
Pcountoutnumber,--前往分页总数
v_curouttype_cur--前往以后页数据纪录
);
procedureDotNetPageRecordsCount(
Psqlcountinvarchar2,--发生dataset的sql语句
Prcountoutnumber--前往纪录总数
);
endDotNot;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
createorreplacepackagebodyDotNetis
--***************************************************************************************
PROCEDUREDotNetPagination(
Pindexinnumber,
Psqlinvarchar2,
Psizeinnumber,
Pcountoutnumber,
v_curouttype_cur
)
AS
v_sqlVARCHAR2(1000);
v_countnumber;
v_Plownumber;
v_Pheinumber;
Begin
------------------------------------------------------------取分页总数
v_sql:=selectcount(*)from(||Psql||);
executeimmediatev_sqlintov_count;
Pcount:=ceil(v_count/Psize);
------------------------------------------------------------显现恣意页内容
v_Phei:=Pindex*Psize+Psize;
v_Plow:=v_Phei-Psize+1;
--Psql:=selectrownumrn,t.*fromcd_ssxlt;--请求必需包括rownum字段
v_sql:=select*from(||Psql||)wherernbetween||v_Plow||and||v_Phei;
openv_curforv_sql;
EndDotNetPagination;
--**************************************************************************************
procedureDotNetPageRecordsCount(
Psqlcountinvarchar2,
Prcountoutnumber
)
as
v_sqlvarchar2(1000);
v_prcountnumber;
begin
v_sql:=selectcount(*)from(||Psqlcount||);
executeimmediatev_sqlintov_prcount;
Prcount:=v_prcount;--前往纪录总数
endDotNetPageRecordsCount;
--**************************************************************************************
endDotNot;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下是在.net中挪用oracle分页存储历程的步骤。(vb.net)
在.net挪用前往纪录集的存储历程,必要用到datareader,可是datareader不撑持在datagrid中的分页,因而必要使用datagrid
自界说分页功效。
ProtectedWithEventsDataGrid1AsSystem.Web.UI.WebControls.DataGrid
DimconnAsNewOracleClient.OracleConnection()
DimcmdAsNewOracleClient.OracleCommand()
DimdrAsOracleClient.OracleDataReader
PrivateSubgridbind(ByValpindexAsInteger,ByValpsqlAsString,OptionalByValpsizeAsInteger=10)
conn.ConnectionString="Password=gzdlgis;UserID=gzdlgis;DataSource=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=ParameterDirectio</p>ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失; |
|