• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> PHP 开发 >> 数据库相关 >> 详细内容
 

推荐文章

  • 通过MySQL内置全文检索实现中文的相关检索
 
 

热点文章

  • MySQL Error Code文档手册---摘自MySQL官方网站
  • 通过MySQL内置全文检索实现中文的相关检索
  • PHP连接MySQL出现乱码的一些个人看法
  • PHP,MYSQL常见问题与解答
  • MySQL中修改密码及访问限制设置详解
  • phpMyAdmin“无法载入mysql扩展,请检查PHP配置”的解决..
  • PHP脚本数据库功能详解
  • 多条件查询
  • 对MYSQL进行全文检索的PHP类库
  • MySQL修改密码方法总结
  • 默默小谈PHP&MYSQL分页原理及实现
  • Adodb 入门教程
 
 

相关文章

  • ORACLE 11g新特性简介
  • 数据库市场:微软和甲骨文快速进步 威胁IBM
  • 如何在PHP中使用Oracle数据库
  • 数据库的新方向
  • MySQL数据库5.1正式版即将发布
  • Oracle Faq(Oracle的字符集问题)
  • MySQL数据库下损坏数据的恢复操作其过程总结
  • 让新安装的MySQL数据库变得更安全
  • MySQL数据库优化概述
  • MySQL数据库常用命令
  • 营销下一站:数据库和社会化
  • SQLServer2005数据库还原到SQLServer2000
 
 

百度搜索

 
 

数据库从mysql转到oracle过程、要点

  • 阅览次数:
  • 文章来源: CP整理
  • 原文作者:
  • 整理日期: 2008-09-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

最近工作中将一论坛数据库从mysql转到oracle,mysql是一个很好用的小型数据库系统,使用它开发一些小型网站和软件是完全 可以胜任的,但到了对数据库高要求时,mysql可能就不大适合了,如一个大型的社区论坛,同时几千人访问,数量达到几十万,几百万时,这时候就需要使用 高性能的数据库系统了。oralce 是一个大型的数据库系统,很多开发者使用它。

现在介绍使用PHP开发的系统从mysql转到oracle 过程的关键点。

php部分

1、mysql_num_rows和oci_num_rows
mysql_num_rows是取mysql数据库结果集中的行数,oci_num_rows取oracle 查询的所受影响的行数。结果发现oci没有类似mysql_num_rows这样的函数,最后只能想出暂时的办法,再查询一次 SELECT COUNT(*) FROM …


2、mysql_insert_id函数
mysql_insert_id是mysql取插入数据自动产生的id什么sql为insertinto testtable(text) values ($text),$id=mysql_insert_id() ,oracle没有这个功能,解决办法只有写一个方法

functionget_seq_nextval($seqName) {
$rs = $this->get_one(”SELECT$seqName.nextval from sys.dual”,”,0,0);
return $rs[0];
}

使用语句$id = $db->get_seq_nextval($seqName)取序列值,后SQL语句为insert into testtable(id,text)values ($id,$text)序列将在下面介绍。

SQL部分

1、关键字自动递增问题
mysql 中的auto_increment很好用但是oracle没有这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现。

假设关键字段为id,建一个序列,代码为:
create sequence seq_test_ids
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
<!–[if !supportLineBreakNewLine]–>
<!–[endif]–>

建解发器代码为:
create or replace trigger tri_test_id
before insert on test_table
for each row
declare
nextid number;
begin
IF :new.id IS NULLor :new.id=0 THEN
select seq_test_id.nextval
into nextid
from sys.dual;
:new.id:=nextid;
end if;
end tri_test_id;
OK,上面的代码就可以实现自动递增的功能了。

2、分页LIMIT
mysql使用limit分页很方便,但是oracle分页就没有这么方便了,只有通过子查询来实现。

function query($SQL,$method=”,$rowfrom =0,$rows = 0) {
if ($rowfrom || $rows) {
$rowfrom += 1;
$rowto = $rowfrom +$rows-1;
$SQL = ’select * from(select row_.*, rownum rownum_ from (’
. $SQL . ‘)row_ where rownum <= ‘
. $rowto . ‘)where rownum_ >= ‘ . $rowfrom;
}
…

上面的代码就是查询方法的片断,这里可以看出oracle分页的实现了,$rowfrom表示第行开始,$rows表示显示的行数。

3、关键字问题
在oracle中关键字是不能用做表名字段名等的,如果定要用使用要双引号括起来,如“type”。

4、单引号的处理
在mysql中字符串是可以用双引号或单引号括起来。但oracle中就只能用单引号。能常在php程序中POST,GET提交的字符我们要用addcslashes使用反斜线转义字符串中的字符。
相当于’会转成\’,”会转成\”。但是在oracle,’转成’’,”不要处理,使用str_replace(“’”,”’’”,$str)就可以了。

上一篇:创业最容易被误导的四个方面
下一篇:MySQL数据库同步
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号