可能是微软的Bug,存储过程访问的问题
通过ADO.NET访问Oracle的存储过程。
为了得到存储过程的参数列表,使用了如下的语句。
//OleDbCommandBuilder.DeriveParameters(oleCmd);
OracleCommandBuilder.DeriveParameters(oleCmd);
在整个项目中,有许多的存储过程。有的存储过程使用就非常正常,但有的存储过程,得到的参数列表就不正确,得到的参数数量偏多,也就是有部分参数重复出现了。
create or replace procedure ssp_SMTotal(IsStep in number,oRes out number)
is
begin
oRes := IsStep;
end;
例如上述的存储过程,在执行完
OracleCommandBuilder.DeriveParameters(oleCmd);
语句后,在Parameters中,Item的数量居然是6个。
但是,将连接换成OleDbCommandBuilder方式时,就是正常的两个。
但对另一个存储过程,使用OleDbCommandBuilder时,参数列表就不正确,再换成OracleCommandBuilder,就正确了。
另外,如果将存储过程换一个名字,重新建立,通常情况该问题也会解决。
不知道是什么原因带来的。
我认为就有可能是微软程序的一个Bug,但想到如此多的人使用这些程序,如果是Bug,早应该被发现了。
尚未发现如何人工制造出该问题的出现,只是在项目开发中,随机出现的。
因此,该问题非常难以解决。
不知道哪位高手曾经遇到这样的问题。