由于对象在C#with oracle数据库中的当前状态,操作无效
我犯了一个错误 由于对象的当前状态,操作无效。 oracle Sqldeveloper代码:(pl/sql) 任何人都可以解决我的问题。由于对象的当前状态,操作无效。由于对象在C#with oracle数据库中的当前状态,操作无效,c#,asp.net,oracle,C#,Asp.net,Oracle,我犯了一个错误 由于对象的当前状态,操作无效。 oracle Sqldeveloper代码:(pl/sql) 任何人都可以解决我的问题。由于对象的当前状态,操作无效。 或者建议修改代码。我想从存储过程返回值。过程不返回任何内容;有两个OUT参数将值传递回调用方,但没有返回类型。但是您似乎在调用Login_Func,而不是您显示的Login_。为什么您要以纯文本形式存储密码并从数据库中检索它?这应该是你纠正的第一件事;有两个OUT参数将值传递回调用方,但没有返回类型。但是您似乎在调用Login_F
或者建议修改代码。我想从存储过程返回值。过程不返回任何内容;有两个OUT参数将值传递回调用方,但没有返回类型。但是您似乎在调用Login_Func,而不是您显示的Login_。为什么您要以纯文本形式存储密码并从数据库中检索它?这应该是你纠正的第一件事;有两个OUT参数将值传递回调用方,但没有返回类型。但是您似乎在调用Login_Func,而不是您显示的Login_。为什么您要以纯文本形式存储密码并从数据库中检索它?这应该是你纠正的第一件事。
create or replace PROCEDURE LOGIN_PROCEED
(P_id IN LOGIN.ID%TYPE,
P_NAME OUT LOGIN.USERNAME%TYPE,
P_PSWD OUT LOGIN.PASSWORD%TYPE
)
AS
BEGIN
IF P_id=2 THEN
SELECT USERNAME, PASSWORD
INTO P_NAME, P_PSWD from LOGIN WHERE ID = P_id;
DBMS_OUTPUT.PUT_LINE('Correct' );
ELSE
DBMS_OUTPUT.PUT_LINE('Wrong username or password' );
END IF;
END LOGIN_PROCEED;
try
{
_oracon.Open();
OracleCommand cmd = _oracon.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Login_Func";
cmd.Parameters.Add("Return_Value",OracleDbType.NVarchar2,ParameterDirection.ReturnValue);
OracleParameter P_ID = new OracleParameter();
P_ID.OracleDbType = OracleDbType.NVarchar2;
P_ID.Direction = ParameterDirection.Input;
P_ID.Value = 1;
cmd.Parameters.Add(P_ID);
OracleParameter P_name = new OracleParameter();
P_name.OracleDbType = OracleDbType.Varchar2;
P_name.Direction = ParameterDirection.Output;
P_name.Value = txt_username.Text;
cmd.Parameters.Add(P_name);
OracleParameter P_Pswd = new OracleParameter();
P_Pswd.OracleDbType = OracleDbType.Varchar2;
P_Pswd.Direction = ParameterDirection.Output;
P_Pswd.Value = txt_password.Text;
cmd.Parameters.Add(P_Pswd);
dr = cmd.ExecuteReader();
if (dr.Read())
{
string a = dr[0].ToString();
Response.Redirect("~/Transactions/intrafundtransfer.aspx");
}
}
catch (Exception ex)
{
throw (ex);
}
finally
{
lbl_msg.Text = dr[0].ToString();
}
_oracon.Close();