【问题标题】:Inserting parameters into Oracle database through asp.net通过asp.net将参数插入Oracle数据库
【发布时间】:2012-03-24 01:11:03
【问题描述】:

我正在使用 Oracle 数据库开发 ASP.net 应用程序。当我尝试将数据插入表 REGISTER 时,它会引发如下异常

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 表有 USERNAME、PASSWORD、EMAIL 作为列

存储过程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();

        }

请帮帮我

问候, 阿琼

【问题讨论】:

    标签: asp.net oracle stored-procedures


    【解决方案1】:

    将您的程序更改为

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

    【讨论】:

    • 不需要varchar2的长度(20),只需:PROCEDURE INSERTREGISTER (u1 varchar2,p1 varchar2,e1 varchar2) AS BEGIN ...
    • @A.B.Cade:谢谢!!!!!!错误消失了,但数据在表中插入了两次。
    • 那是因为您运行了两次cmd.ExecuteNonQuery() - 一次作为呼叫,一次在return cmd.ExecuteNonQuery()
    • @A.B.Cade : 我应该在退货声明中添加什么?
    • @ArjunBabu- 你可以保持原样,然后删除第一个调用:conn.Open(); return cmd.ExecuteNonQuery();。顺便说一句,您在finally 范围内确实有一个 conn.close() ,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2017-06-21
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2014-01-13
    相关资源
    最近更新 更多