C#调用存储过程提示非法变量名。存储过程代码如下:create or replace procedure login_in(
p_loginid in varchar2,
p_password in varchar2,
p_admin out varchar2,
p_nam out varchar2,
p_reason out varchar2)
is
v_count varchar2(10);
v_adm varchar2(50);
v_reas varchar2(50);
v_nam varchar2(50);
begin
select count(*) into v_count from kd_tuser where userid =p_loginid;
if v_count<1 then
v_reas :='noUser';
v_adm:='-1' ;
v_nam:='';
else
select count(*) into v_count from kd_tuser
WHERE userid = p_loginid AND password =p_password;
if v_count<1 then
v_reas:='pError';
v_adm:= '-1';
v_nam:='';
else
v_reas:='access';
end if;
end if;
p_reason:=v_reas;
p_admin:=v_adm;
p_nam:=v_nam;
end login_in;调用代码c#侧:webconfig文件中连接串:<configuration>
<configSections>
////省略
///连接字符串
<add key="ConnectionString" value="Data Source=hh_conn;User ID=lyjfsoftsys;Password=sjfx0224"/>
</appSettings>
登陆验证:
OracleConnection myConnection = new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
////存储过程名称login_in
OracleCommand myCommand = new OracleCommand("LOGIN_IN", myConnection);
OracleParameter parameterLoginID = new OracleParameter("p_loginid",OracleType.VarChar,50);
parameterLoginID.Direction = ParameterDirection.Input;
parameterLoginID.Value = loginid;
myCommand.Parameters.Add(parameterLoginID);
OracleParameter parameterPassword = new OracleParameter("p_password",OracleType.VarChar,50);
parameterPassword.Direction = ParameterDirection.Input;
parameterPassword.Value = password;
myCommand.Parameters.Add(parameterPassword);
OracleParameter parameterADMIN = new OracleParameter("p_admin",OracleType.VarChar,50);
parameterADMIN.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterADMIN);
OracleParameter parameterUSERNAME = new OracleParameter("p_nam",OracleType.VarChar,100);
parameterUSERNAME.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterUSERNAME);
OracleParameter parameterReason = new OracleParameter("p_reason",OracleType.VarChar,20);
parameterReason.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterReason);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
运行到myCommand.ExecuteNonQuery();倒数第二句出错。提示非法变量名。急求解决。
p_loginid in varchar2,
p_password in varchar2,
p_admin out varchar2,
p_nam out varchar2,
p_reason out varchar2)
is
v_count varchar2(10);
v_adm varchar2(50);
v_reas varchar2(50);
v_nam varchar2(50);
begin
select count(*) into v_count from kd_tuser where userid =p_loginid;
if v_count<1 then
v_reas :='noUser';
v_adm:='-1' ;
v_nam:='';
else
select count(*) into v_count from kd_tuser
WHERE userid = p_loginid AND password =p_password;
if v_count<1 then
v_reas:='pError';
v_adm:= '-1';
v_nam:='';
else
v_reas:='access';
end if;
end if;
p_reason:=v_reas;
p_admin:=v_adm;
p_nam:=v_nam;
end login_in;调用代码c#侧:webconfig文件中连接串:<configuration>
<configSections>
////省略
///连接字符串
<add key="ConnectionString" value="Data Source=hh_conn;User ID=lyjfsoftsys;Password=sjfx0224"/>
</appSettings>
登陆验证:
OracleConnection myConnection = new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
////存储过程名称login_in
OracleCommand myCommand = new OracleCommand("LOGIN_IN", myConnection);
OracleParameter parameterLoginID = new OracleParameter("p_loginid",OracleType.VarChar,50);
parameterLoginID.Direction = ParameterDirection.Input;
parameterLoginID.Value = loginid;
myCommand.Parameters.Add(parameterLoginID);
OracleParameter parameterPassword = new OracleParameter("p_password",OracleType.VarChar,50);
parameterPassword.Direction = ParameterDirection.Input;
parameterPassword.Value = password;
myCommand.Parameters.Add(parameterPassword);
OracleParameter parameterADMIN = new OracleParameter("p_admin",OracleType.VarChar,50);
parameterADMIN.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterADMIN);
OracleParameter parameterUSERNAME = new OracleParameter("p_nam",OracleType.VarChar,100);
parameterUSERNAME.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterUSERNAME);
OracleParameter parameterReason = new OracleParameter("p_reason",OracleType.VarChar,20);
parameterReason.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterReason);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
运行到myCommand.ExecuteNonQuery();倒数第二句出错。提示非法变量名。急求解决。
解决方案 »
- 类的对象不是引用类型的吗?
- 还是EXCEL导入SQL的问题,有点头疼!!
- 求:学习C#设计模式的好的网站及资料!!!
- 怎樣將收藏夹中的所有文字及鏈接自動導出成XML文件?用C# WINFORMS或WEB FORMS均可。
- 关于Variant在。net中的问题
- 【下载】Visual Studio 2005 Enterprise Architect Beta 1 (8CD) 大家快来加速!
- c#界面制作的问题...
- C#中结构提问题在线等!急!
- BinaryReader “(br.BaseStream).ReadTimeout”引发了“System.InvalidOperationException”类
- DLL 的 引用问题
- C#下如何锁定屏幕?
- dateTimePicker查询问题错误
以下是SQL的写法:OracleParameter parameterReason = new OracleParameter("@p_reason",OracleType.VarChar,20);
我看你的存储过程就有点问题
如果WHERE userid = p_loginid AND password =p_password条件下没记录,你的into v_count 是会报异常的。
ORACLE是加:(冒号)的。