.net 调用Oracle 的一些总结。
原来一直用SQLServer,最近开始用Oracle了。转型当中遇到了很多问题,随着遇到的问题越来越多,我会把自己的心得不断地补充,以备不时之需。
一、一上来遇到的就是.net 调用Oracle 存储过程、函数困难,关于这方面的常见问题,请参照这位兄弟的博客:
http://cwbboy.cnblogs.com/archive/2006/03/22/356017.html
二、在使用Oracle的过程中发现,Oracle的对于SQL语句的检查要比SQLServer严格的多,比如:
1、在Oracle和SQLServer中,虽然建表的时候不允许有重复的字段名,但是在查询语句中如果使用了重复别名,情况就不一样了,比如:
SELECT A.* FROM (
SELECT ID,code as 代码,cn_name as 中文名称,code as 代码,cn_name as 中文名称 FROM BS_PERSON
) A
在SQLServer中执行成功,而在Oracle中执行则会提示错误:ORA-00918: column ambiguously defined,意思是列没有明确定义。为什么Oracle中会这样呢?原来,在嵌套查询中,外层查询会根据子查询的查询结果生成临时表A,又因为在表中是不允许有重复字段的,Oracle对于这点检查十分严格,SQLServer只对实际的物理表进行检查。所以会有此差异。
三、Oracle10g安装过程中"无法确定主机的IP地址时产生该异常错误" 的解决办法:
1、原来Oracle10g以后版本在安装前会先检测系统的IP地址,而如果通过DHCP动态获取IP地址的机器,在解析IP地址时Oracle会认为是不确定的IP地址,就会出现上述异常。经修改c:\windows\system32\drivers\etc\hosts文件来手动解析后安装成功,文件内容如下:
127.0.0.1 localhost
动态获取的IP地址 计算机机器名
2、单机版上安装Oracle的解决办法:
到控制面板/添加硬件,在向导中选择“是,已经连接了此硬件”→“网络适配器”→“Microsoft Loopback Adapter”,添加完成,你会发现新建了个假的“本地连接”,为得是骗下Oracle。把这个本地连接的IP设置一下(例如192.168.1.1)。这时,再回去重新让Oracle检测一遍,通过!。
四、ORA-12514:TNS无法识别当前请求的服务名
网上的解决办法:修改Listener.ora文件,例如:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 机器的IP地址)(PORT = 1521))
)
)
黑体字部分为要在Listener.ora文件中添加的部分,红色为需要注意修改的部分。
然后再重起Oracle服务和监听服务,注意先后顺序。
这是通常情况的下的解决办法,但我的情况很特殊。由于我的服务器是通过DHCP动态获取IP,服务器IP变了后,通过上述方式修改,鼓捣半天也不行,令我百思不得其解。后来重装了Oracle,遇到了问题三,从而辗转发现原来是Oracle无法自动识别动态IP在作祟。虽然费了一番大周折,但总算问题解决了。
当然可能还有很多其他的原因。就我来讲遇到的情况是这样的。。。。。。
以上未完待续,前后顺序很乱,随学随记,最后在整理顺序……
转载于:https://www.cnblogs.com/eb5mj/archive/2011/01/28/1947010.html
.net 调用Oracle 的一些总结。相关推荐
- mybatis可以用oracle,使用MyBatis调用oracle函数(基于注释)
我需要使用注解在MyBatis中调用Oracle函数.使用MyBatis调用oracle函数(基于注释) 我的映射: @Select("{ CALL #{outParam, jdbcType ...
- mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...
- java调用存储过程 oracle_java调用oracle存储过程
java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...
- C#调用Oracle存储过程分页
直接调用Oracle中的存储过程完成对表的分页,对代码封闭程度高,执行高效.以下为C#分页类代码,包括Oracle数据库 端存储过程PLSQL代码. // 程序调用示例: // int tota ...
- Java调用Oracle存储Package
Oracle的包Package中可以有很多存储,可通过该包的总调入口在java中直接调用. //java调用oracle的package代码 public boolean cal() throws j ...
- .NET调用Oracle存储过程,使用数组类型的参数(如ArrayList)
今天一个项目组的朋友问及:如何在.NET中调用Oracle的存储过程,并以数组作为参数输入. Oracle的PL/SQL非常强大,支持定长数组和变长数组,支持任何自定义数据类型.通过阅读ODP的文档, ...
- C#调用ORACLE存储过程返回结果集及函数
ORACLE段: 首先在ORACLE建立PACKAGE和PACKAGE BODY,将在这里面定义函数和存储过程返回结果集. 1:建立PACKAGE: CREATE OR REPLACE package ...
- spring+springMvc+mybatis 调用oracle 存储过程
最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...
- java调用oracle的函数,从Java调用Oracle函数
我有以下功能规格: FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2, IN_parameter2 IN VA ...
- linux系统下PHP无法调用oracle数据库的解决方法
我们有项目php调用oracle 在正线上环境不能运行成功.经调试通过使用如下方式: $param = '00000999';$en = 'cn';@passthru("/usr/local ...
最新文章
- sse php,sse.php · Gitee 极速下载/modphp - Gitee.com
- WINCE下SOS驱动开发
- 关于Java的10个谎言
- @codeforces - 1106F@ Lunar New Year and a Recursive Sequence
- WPF-21:WPF实现仿安卓的图案密码键盘(初级)
- 防火墙简介(二)——firewalld防火墙
- mapgis编辑属性结构编辑不了_MapGIS67操作手册(3-17)MapGIS67编辑线属性结构的方法...
- AntD 官网样例 InputRef报错原因
- 2021-08-26
- Laravel最佳实践--根据搜索参数为Model查询应用不同的Where条件
- IOS开发中--点击imageView上的Button没有任何反应
- 服务发现系统consul-HTTP API
- linux查看都哪口状态,linux c 查看网口状态
- API文档和代码片段管理器:​​​​Dash
- 基于RAM的雷达线性调频信号产生
- 计算机会计信息系统中凭证日期应该是,《电算化会计》期中考试试题.doc
- 在1分钟K线图中显示分时图均价线的公式
- 获取jpg(或jpeg)图片中的详细信息(EXIF信息)
- java如何用雪花算法批量生成唯一编码(保证位数不过长)?
- uni-app 应用换肤功能