Asp.Net 我无法填写 DataTable /// 或 \\\ 我的程序 (oracle) 不工作

Asp.Net I cant fill the DataTable ///OR\\\ My Procedure (oracle) doesnt work

我写了一个登录程序,它从 asp Login.aspx 获取参数。我还有一个发送参数和获取结果的功能。我想我可以发送参数但是当数据表填充时,抛出错误。我在 C# 方面尝试了一些东西,但我无法理解。 PS:I不确定我是否执行了程序。不过程序似乎是对的。

public bool RunLoginProcedure(string E_mail, string PassWord)
    {
        OracleConnection connect = myconnection();
        OracleCommand command = new OracleCommand();
        OracleDataAdapter adapter;
        DataTable table = new DataTable();

        command.Connection = connect;

        //OracleParameter[] parameters = new OracleParameter[]
        //{
        //    new OracleParameter("@EMail",E_mail),
        //    new OracleParameter("@UserPassword",PassWord)
        //};

        //command.Parameters.Add(parameters);
        command.Parameters.Add(new OracleParameter("EMail", OracleDbType.NVarchar2));
        command.Parameters.Add(new OracleParameter("UserPassword", OracleDbType.NVarchar2));
        command.Parameters["EMail"].Value = E_mail;
        command.Parameters["EMail"].Direction = ParameterDirection.Input;
        command.Parameters["UserPassword"].Value = PassWord;
        command.Parameters["UserPassword"].Direction = ParameterDirection.Input;
        command.CommandText = "Procedure_Login";
        command.CommandType = CommandType.StoredProcedure;

        //command.ExecuteNonQuery(); //here
        command.ExecuteNonQueryAsync();
        adapter = new OracleDataAdapter(command);
        adapter.Fill(table);

        bool value;

        if (table.Rows.Count != 0)
        {
            value = true;
        }

        else value = false;


        connect.Close();
        connect.Dispose();


        return value;
    }

这是我的程序

create or replace procedure Procedure_Login
(
EMail IN USERS.E_MAIL%TYPE,
UserPassword IN USERS.USERPASSWORD%TYPE,
id OUT VARCHAR2,
firstname OUT VARCHAR2,
lastname OUT VARCHAR2
) is
begin

SELECT USER_ID,FIRSTNAME,LASTNAME 
INTO id,firstname,lastname
FROM USERS 
WHERE E_MAIL=EMail AND USERPASSWORD=UserPassword;

end Procedure_Login;

And here is the error: enter image description here Edit:view error more specificenter image description here

这里没有解决方案,所以想告诉你我做了什么。我无法执行我的程序(我认为这是因为我与 oracle-plql 不相似)所以我决定放弃使用程序。我在 c# 中使用了 OracleCommand,并在命令中做了同样的工作。 (这更容易,我知道,我只是想学习用 c# 执行程序)所以现在可以用了。我仍然不知道如何在 C# 中执行 运行 过程,我认为我迟早需要学习它。所以如果有人能解决这个问题那就太好了。祝你有美好的一天

只是您正在调用一个需要五个参数(2:输入,3:输出)的存储过程,但您只传递了 2 个输入参数..

create or replace procedure Procedure_Login
(
      EMail IN USERS.E_MAIL%TYPE,
      UserPassword IN USERS.USERPASSWORD%TYPE,
      id OUT VARCHAR2,        <--- miss in your calling code! 
      firstname OUT VARCHAR2, <--- miss in your calling code! 
      lastname OUT VARCHAR2   <--- miss in your calling code! 
) is
begin
 ...    
end Procedure_Login;

您应该在 command.ExecuteNonQuery.ExecuteNonQueryAsync() 这些行之前添加您的代码...

 command.Parameters.Add(new OracleParameter("Id", OracleDbType.NVarchar2));
 command.Parameters.Add(new OracleParameter("firstname", OracleDbType.NVarchar2));
 command.Parameters.Add(new OracleParameter("lastname", OracleDbType.NVarchar2));

 command.Parameters["Id"].Direction = ParameterDirection.Output;
 command.Parameters["firstname"].Direction = ParameterDirection.Output;
 command.Parameters["lastname"].Direction = ParameterDirection.Output;