ORA-06550 调用 Oracle 存储过程时参数数量或类型错误

Gee*_*der 5 .net c# asp.net oracle ora-06550

已经为此奋斗了两天,感到非常沮丧,但感觉自己正在取得进展。在查看了 Oracle 的在线文档后,我来到了这里。代码执行时收到以下错误:

ORA-06550:第 1 行,第 15 列:PLS-00306:调用“P_SALTEDHASH”时参数的数量或类型错误 ORA-06550:第 1 行,第 7 列:PL/SQL:忽略语句

存储过程如下所示:

PROCEDURE stored_procedure_name ( p_passwd            IN  VARCHAR2,
                          p_salt              IN  VARCHAR2,
                          p_saltedhash_passwd OUT VARCHAR2
                        )
Run Code Online (Sandbox Code Playgroud)

我的代码:

        string stored_procedure_name = "stored_procedure_name";

        // create the command object
        OracleCommand cmd = conn.CreateCommand();
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = stored_procedure_name;
        cmd.BindByName = true;

        //Oracle Parameters necessary for the p_saltedhash function          
        cmd.Parameters.Add("p_passwd", p_passwd);
        cmd.Parameters.Add("p_salt", p_salt);

        OracleParameter p_saltedhash_passwd = 
            new OracleParameter("p_saltedhash_passwd", OracleDbType.Varchar2);
        p_saltedhash_passwd.Direction = ParameterDirection.ReturnValue;
        cmd.Parameters.Add(p_saltedhash_passwd);



        // execute the pl/sql block
        cmd.ExecuteNonQuery();

        Response.Write("Pin hash is: " + p_saltedhash_passwd);`
Run Code Online (Sandbox Code Playgroud)

Yah*_*hia 5

改变

p_saltedhash_passwd.Direction = ParameterDirection.ReturnValue;
Run Code Online (Sandbox Code Playgroud)

p_saltedhash_passwd.Direction = ParameterDirection.Output;
Run Code Online (Sandbox Code Playgroud)