Test.GetList 
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常  Function GetList(keywords In varchar2
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常                           ,p_info_list_Cursor out get_data_cur_type)
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常   
Return Number 
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常
As 
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常  
Begin
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常       
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常       
open p_info_list_Cursor For 
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常       
Select * from Test where Key=keywords
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常;
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常       
Return 0;
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常  
End;
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常

      存储过程只返回一个Number ,记录集以 out 参数方式返回。 在.net中调用方式如下:
  

 1.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常         OracleConnection OracleConn = new OracleConnection(连接字符串);
 2.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常        OracleCommand cmd = new OracleCommand("Test.GetList", OracleConn);
 3.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常        cmd.Parameters.AddRange(
 4.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常            new OracleParameter[]
 5

      OracleParameter中的 参数名一定要与存储过程中的名称一致,可以忽略大小写。存储过程定义了2个参数,一个KeyWords, 一个是out 类型的游标:p_info_list_Cursor。 因为  Function有返回值,所以我们还需要增加一个名为“ReturnValue"的参数, 这个名称是固定的。 记录集通过 p_info_list_Cursor 返回。 参数配置完成以后,直接使用cmd的众多Exec方法即可,虽然我们使用了一个Out 参数接受记录集游标,但这个参数不需要我们处理,OracleCommand 会自动处理它,我们只需要像以往使用SqlCommand一样,得到DataReader,然后读数据即可。

       直接执行SQL语句

             Sql 语句中使用":" 表示参数。
     在Sql Server 中我们可以按以下方式使用SQL 语句: "Insert into Table (Field1,field2) values(@Value1,@Value2) ", 然后我们再New 几个Paramter: new SqlParameter("@Value1",value)...
  在查询字符串中使用@+字符 来描述参数,在SqlParameter中的参数名也要使用"@"符号。
 而在Oracle中Sql 语句不能使用@符号, 以冒号":"代替. 如:
   

.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 string Sql = "Insert into SEARCH_HISTORY(KEYWORDS,PHONE,RESULT_ID,SEARCH_TIME) values(:KEYWORDS,:PHONE,:RESULT_ID,:SEARCH_TIME)";
.net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常        OracleCommand cmd 
= new OracleCommand(Sql, OracleConn);
 DateTime.Now;

     
     常见错误:

         1、“调用 '存储过程名称' 时参数个数或类型错误”
  
          出现错误的原因是因为你的 创建OracleParameter 是使用的参数名称与存储过程或Sql语句中定义的参数名称不一致。 另外,也要注意,虽然在Sql 语句中使用 冒号“:”代表参数,但在创建OracleParameter时,指定的参数名称不能使用冒号,在new OracleParameter时,ParameterName只能使用参数的字符部分。

         2、“存储过程名称' 不是过程或尚未定义”

        OracleCommand的Parameters集合中的参数个数与存储过程中定义的数量不一致,你可能漏了某个Parameter没有创建

         3、"ORA-01036: 非法的变量名/编号“
 
       出现此错误的原因很可能是存储过程的包体的参数定义与包头的定义不一样,很多时候修改了包体,却忘了修改包头。 另外,创建OracleParameter时,由于构造函数的版本众多,使用了某些版本时,可能会出现这个错误,建议创建OracleParameter时,一定要指定OracleType。 
        直接使用Sql 语句时,在Sql 语句中的 参数部分没有使用冒号作为前缀,或者错误使用了Sql Server 的"@"符号都会导致此错误。

       总之此错误出现在Parameter指定的ParameterName,与实际参数名称不匹配时。
 
      要注意:在 new OracleParameter() 中,指定的ParameterName 只需要包含参数的字符部分,无需保含前缀,如:冒号。


      4、System.Data.OracleClient requires Oracle client software version 8.1.7 or greater. 

      出现这个错误表示你需要安装Oracle客户端。假如你已经安装了Oracle客户端,还出现这个错误,那肯定由于权限的问题,博客园的朋友


    
      
     

相关文章: