oracle中的存储过程教程,Oracle 存储过程教程

Oracle 存储过程教程

2019-01-03

编程之家

https://www.jb51.cc

编程之家收集整理的这篇文章主要介绍了Oracle 存储过程教程,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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 typecur

)

AS

vsql 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 cdssxl t' ; --要求必须包含rownum字段

vsql := 'select * from (' || Psql || ') where rn between ' || v_Plow || ' and ' || v_Phei ;

open vcur for vsql;

End DotNetPagination;

--**

procedure DotNetPageRecordsCount(

Psqlcount in varchar2,

Prcount out number

)

as

v_sql varchar2(1000);

vprcount number;

begin

vsql := '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自定义分页功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值