通过asp.net将参数插入Oracle数据库

通过asp.net将参数插入Oracle数据库,asp.net,oracle,stored-procedures,Asp.net,Oracle,Stored Procedures,我正在用Oracle数据库开发一个ASP.net应用程序。当我尝试将数据插入表寄存器时,它抛出一个异常,如下所示 ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'INSERTREGISTER' ORA-06550: line 1, column 7: PL/SQL: Statement ignored 表REGISTER将用户名、密码、电子邮件列为 存储过程INSERT

我正在用Oracle数据库开发一个ASP.net应用程序。当我尝试将数据插入表寄存器时,它抛出一个异常,如下所示

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'INSERTREGISTER'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
REGISTER将用户名、密码、电子邮件列为

存储过程INSERTREGISTER如下所示

create or replace
PROCEDURE INSERTREGISTER IS

u1 varchar2(20);
p1 varchar2(20);
e1 varchar2(20);

BEGIN

INSERT INTO REGISTER (USERNAME, PASSWORD, EMAIL) VALUES (u1, p1, e1);

END INSERTREGISTER;
我的c#代码是:

public int Insert(string u1, string p1, string e1)

    {
        try
        {
            OracleCommand cmd = new OracleCommand("INSERTREGISTER", conn);
            cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add(new OracleParameter("u1", OracleType.VarChar)).Value = u1;
        cmd.Parameters.Add(new OracleParameter("p1", OracleType.VarChar)).Value = p1;
        cmd.Parameters.Add(new OracleParameter("e1", OracleType.VarChar)).Value = e1;

            conn.Open();
            cmd.ExecuteNonQuery();

            return cmd.ExecuteNonQuery();

        }
请帮帮我

问候,,
Arjun

将您的程序更改为

create or replace
PROCEDURE INSERTREGISTER (u1 varchar2,p1 varchar2,e1 varchar2) AS
BEGIN
--your sql statement
END

不需要varchar2的长度
(20)
,只要:
过程插入寄存器(u1 varchar2,p1 varchar2,e1 varchar2)作为开始…
@A.B.Cade:谢谢!!!!!!错误消失了,但数据在表中插入了两次。这是因为您正在运行
cmd.ExecuteNonQuery()
两次-一次作为调用,一次在
return cmd.ExecuteNonQuery()
@a.B.Cade:我应该在return语句中添加什么?@arjunbab-您可以保持原样,但可以删除第一个调用:
conn.Open();  返回cmd.ExecuteNonQuery()。顺便说一句,在
finally
范围中确实有一个conn.close(),对吗?