![]() | CYQ.Data 数据层框架CYQ.Data 是一款由路过秋天创作的支持多数据库应用[Txt,Xml,Access,MSSQL,Oracle,SQLite,MySql]的底层数据库操作类库,使用本类库可以轻松快速开发项目(QQ群:6033006)。 |
CYQ.Data 数据框架 Oracle 分页存储过程
框架原理 |
|
|
| #楼主 |
下面是CYQ.Data 数据框架在 Oracle 的 分页存储过程 的代码: 请分开两次执行,先创建Package,再创建存储过程。 create or replace package MyPackage as
type MyCursor is ref cursor; procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2, resultCount out int, resultCursor out MyCursor); end MyPackage; --先执行上面的,再执行下面的
create or replace package Body MyPackage is procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2, resultCount out int, resultCursor out MyCursor) is --定义变量 newtableName varchar2(4000); rowStart int; rowEnd int; mySql varchar2(8000); whereOnly varchar2(8000); OrderOnly varchar2(400); begin newtableName:=tableName; mySql:='select count(*) from '||tableName; if whereStr is not null and length(whereStr)>0 then rowStart:=instr(whereStr,'order by'); if rowStart>0 then whereOnly:=substr(whereStr, 1,rowStart-1); --取得条件 OrderOnly:=substr(whereStr,rowStart, length(whereStr)-rowStart+1); --取得排序方式(order by 字段 方式) else whereOnly:=whereStr; OrderOnly:=''; end if; whereOnly:=' where '|| whereOnly; mySql:=mySql||whereOnly; end if; execute immediate mySql into resultCount; -- dbms_output.put_line('查询总条数SQL=>'||whereStr||'--'||mySql||resultCount); --执行查询,查询总条数 --不分页查所有 if pageIndex=0 and pageSize=0 then mySql:='select * from '||tableName||whereOnly||OrderOnly; else --计算起始和结束索引 rowStart:=(pageIndex-1)*pageSize+1; rowEnd:=rowStart+pageSize-1; mySql:='select * from (select t.*,RowNum as rn from (select * from '||newtableName||whereOnly||OrderOnly||') t) where rn between '||rowStart||' and '||rowEnd; end if; open ResultCursor for mySql; --dbms_output.put_line('SQL=>'||mySql); end SelectBase; end MyPackage; ![]() |
游客[注册][182.151.214.*]2011/7/31 16:08:02 | #2 | |
![]() | 一些简单的应用还行, 如果我要关联多张表就不行了。 回复: 将多表查询语句加括号成视图就可以了。 |
游客[注册][60.30.33.*]2011/7/26 10:13:09 | #1 | |
![]() | C#中如何调用呢? 回复: 和传统的存储过程调用一样!你可以搜索一下!或者下载CYQ.Data V3.0的源码看! |
发表评论
论坛公告
帖子搜索
最新帖子
最新评论
- 请教博主。我mysql的提示 V5.7.7.4 MySql.xxxx:check the tablename "tbl_site_info" is exist? error:ExeDataReader():Expression #1 of ORDER BY clause is not in SELECT list, references column 'information_schema.s1.ORDINAL_POSITION' which is not in SELECT list; this is incompatible with DISTINCT 配置如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Conn" connectionString="host=192.168.3.101;Port=3306;Database=xxxxx;uid=root;pwd=2017" providerName="MySql.Data.MySqlClient"/> </connectionStrings> </configuration>
- 查询语句有点问题,软件启动时查询语句可以从数据库查询出数据,软件一直运行时无论怎么修改数据库,查询出来的还是老数据,不知道是为什么
- 我语句中用到了union all而且两个查询都有查询条件,action.select总是不成功,不知道有没有什么好的解决办法,谢谢
- 大神,如果我想通过一个对象(从数据映射过来的)要插入的话,我需要遍历字段然后每个set一下吗?有没有更好的方法??
- 真心好用,想问下秋天直接拼写sql怕注入吗
- V4.5后,好多方法都改变了,求来个新的日志帮助
- 請問大神V5源碼要多少錢 我是和交流過的
- 楼主,,从数据库里查出来并绑定datagridview,但是显示的都是数据库里的英文名,怎么改??好纠结啊这个。。。。
- 我想问一下,主从表添加怎样处理
- 10年就过了!!!!