从mysql/sqlserver转到 oracle 有哪些常识性问题?

发布网友 发布时间:2022-04-23 07:57

我来回答

2个回答

懂视网 时间:2022-05-01 13:16

 地址/服务  第一次我看了也不懂填只好去查资料

技术分享

 

这样还是登录不了的,还要配置奇葩OCI 

目录地址:设置ORACLE的主目录

OCI地址: 如果主目下BIN文件的OCI设置了不能用,就要单独下载一个 OCI.dll,填写下载的OCI.DLL地址

技术分享

 

OK这样就能够跑起来了

 

Navicat

下载:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 

Instant Client for Microsoft Windows (x)

将它解压覆盖到 Navcat 安装目录下的  NavicatOracleserversora

技术分享

 

设置刚才覆盖的地址

技术分享

OK可以跑起来了

 

4、表名的大写与小写

如果使用PLSQL可能不会遇到这种问题他会把你的表自动转成大写,假如你用Navcat建一个表为Student ,

你使用 select * from Student是查询不到这个表的,只能写成这样select * from "Student" 所以建表和字段需要改成大写 这样在查询的时候会很方便。

 

5、参数化的区别

MYSQL SQLITE SQLSERVER 都可以使用@参数化 ,而ORACLE只能使用 : 作为参数符号

 

坑了我最长时间的一个坑,就是参数化的顺序问题,这个问题同样不是很多人都会遇的到,因为我用的是最底层的Ado.net

select * from Student where name=:name and id=:id  

我的参数是  

 new OracleParamer[] { id=1,name="2" }(数组不是这么声名只是让你们看的更清楚些。)

 因为顺序不同导致错误 所以必须要写成

 new OracleParamer[] { name="2" ,id=1}

 (经过各种排除法才找到了是顺序引的BUG,当时血差点吐出来了,难道Oracle和Access一样不智能)

解决这个问题的方法就是

将   SqlCommand.BindByName = true; 

 设置后顺序问题就解决了,解决问题很容易,难的是找不出问题点在哪儿。

6、默认Oracle只能查询一条语句

如果你写成  insert (xxx) values (xxxx);select xxx; 这样是会报错的,要加上begin end才可以执行多条 ,貌似 begin end不能用于查询只能是 update delete insert

 

7、Oracle和SQLServer不一样没有identity都是通过序列实现的

创建一个序列,然后行入 insert (id) values (序列名.Nextval)   查询当前序列用  SELECT 序列名.currval from dual  相当于select @@identity

 

另外OracleSugar.ORM 已经转制成功了 花了些时间,在测试2天就会发布。

可以先了解下 SqlSugar ORM http://www.cnblogs.com/sunkaixuan/p/5654695.html

从SqlServer转手Oracle的一些坑

标签:

热心网友 时间:2022-05-01 10:24

我说几个:

Oracle正常最少需要两个服务:OracleService<SID>和Listener 的服务

Oracle的一个user就是一个schema,两者是同一个概念

Oracle(不考虑rac),一般不需要建多个instance,建不同用户即可。

Oracle的日期类型是date,相当于sqlserver的datetime

Oracle的一般用varchar2,不用varchar

追问1. lsnrctl start的配置文件在listener.ora
2. conn user/pass 是连接本地,不通过端口 conn user/pass @ name 会通过监听
3. 监听可以转本地数据库,也可以转远程数据库
4. oracle不一定要安装,环境对了拷来改下设置就能用。。。

追答4. oracle不一定要安装,环境对了拷来改下设置就能用。。。

这个是客户端吧,客户端可以做到
服务端也能copy,配置?那也太牛了?!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com