.net调用oracle存储过程问题(查了CSDN的例子和微软的例子都没解决)
存储过程代码如下并且调试成功:
(is_parentnum IN VARCHAR2,is_classname IN VARCHAR2)
as
ls_classnum varchar2(18);
ls_maxclassnum varchar2(18);
li_maxnum integer;
BEGIN
select max(classnum) into li_maxnum from materialclass where parentnum=is_parentnum;
if li_maxnum>0 then
/*ls_maxclassnum:=(to_number(ls_maxclassnum)+1);
else
*/
ls_maxclassnum:=to_char(li_maxnum+1);
else
ls_maxclassnum:=is_parentnum+'01';
end if;
insert into materialclass(classnum,classname,parentnum) values
(
ls_maxclassnum,
is_classname,
is_parentnum
);
commit;
dbms_output.put_line('测试成功!');
END
;
.net中调用如下:
oracleConnection1.Open();
System.Data.OracleClient.OracleCommand comm = new System.Data.OracleClient.OracleCommand();
comm.CommandType = System.Data.CommandType.StoredProcedure;
comm.Connection = oracleConnection1;
comm.CommandText = "WZGL.SP_MATERIALCLASS_INSERT";
System.Data.OracleClient.OracleParameter a = comm.Parameters.Add(new System.Data.OracleClient.OracleParameter("ONE",System.Data.OracleClient.OracleType.NVarChar));
System.Data.OracleClient.OracleParameter b = comm.Parameters.Add(new System.Data.OracleClient.OracleParameter("TWO",System.Data.OracleClient.OracleType.NVarChar));
a.Value = "aaaa";
b.Value = "BBBBB";
comm.ExecuteNonQuery();
错误如下:
ORA-06550: 第 1 行, 第 7 列: PLS-00306: 调用 'SP_MATERIALCLASS_INSERT' 时参数个数或类型错误 ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored
我都怀疑是不是我的。net环境有为题了,希望各位大侠帮帮忙:
问题点数:100、回复次数:10Top
1 楼whbdxxx(大兵)回复于 2004-09-02 22:34:09 得分 0
up一下先
Top
2 楼The123(Shall We Dance? :))回复于 2004-09-02 22:39:14 得分 40
("ONE",System.Data.OracleClient.OracleType.NVarChar));
->("ONE",System.Data.OracleClient.OracleType.VarChar));Top
3 楼The123(Shall We Dance? :))回复于 2004-09-02 22:39:49 得分 0
("TWO",System.Data.OracleClient.OracleType.NVarChar));
->("TWO",System.Data.OracleClient.OracleType.VarChar));
Top
4 楼zhpsam109(JACKY.昊昊)回复于 2004-09-02 22:47:32 得分 10
同意楼上!Top
5 楼vesky(静心如止水,凌叶落清塘)回复于 2004-09-02 22:50:28 得分 10
upTop
6 楼lxcc()回复于 2004-09-02 22:51:08 得分 30
http://support.microsoft.com/default.aspx?scid=kb;en-us;309361&Product=adonet
看过吗?Top
7 楼csq0516(阿松)回复于 2004-09-03 02:27:50 得分 5
upTop
8 楼whbdxxx(大兵)回复于 2004-09-03 09:54:59 得分 0
to:The123(在我地盤這 伱就得聽我的)
我改了许多数据类型都显示那个错误,还是不行,谁有这个环境,可以帮我调试一下吗?可以写个简单的存储过程,比如传两个参数插入一个信息的存储过程在。net中调用。主要是Parameter这得问题,但是这个和其他的例子都一样啊。
to:lxcc(虫子)
谢谢你的例子,我看了,它是用的OledbCommand,我们这边希望用的是ORcaleCommand,有这方面的例子吗?
等待!!!!!!!!!
Top
9 楼johnmaster(枫)回复于 2004-09-03 10:15:49 得分 5
up
等待高手解决Top
10 楼whbdxxx(大兵)回复于 2004-09-03 10:15:54 得分 0
呵呵,我刚刚搞定了这个问题,是参数设置的问题,Parameter中的参数名必须和存储过程中的参数名相一致,这个我没有发现,希望大家用时不要忘了这一点。节贴。Top




