asp.net 调用oracle存储过程 ,获取返回值
using (OleDbConnection conn = new OleDbConnection(ConnectionString))
{
using (OleDbCommand comm = new OleDbCommand("p_start_compute", conn))
{
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add("p_ip", OleDbType.VarChar, 30).Value = userip;
comm.Parameters.Add("r_jobcode", OleDbType.VarChar, 10).Direction = ParameterDirection.Output;
comm.Parameters .Add ("r_code",OleDbType.Integer).Direction = ParameterDirection .ReturnValue;
conn.Open();
comm.ExecuteNonQuery();
if (comm.Parameters["r_code"].Value != null)
{
Jobcodetext.Text = JobCodeName(comm.Parameters["r_jobcode"].Value.ToString());
string aaa = Jobcodetext.Text;
int cc = aaa.Length;
}
}
}显示的 Jobcodetext.Text 的内容为: 301
aaa 的值为 “301”
而 cc 的值 却为 10
不知为何??然后调用 string ee = JobCodeName(aaa);在 vs2005开发环境下 ee 的值 等于 “理论”;
而发布到服务器上去 ee 的值 却是空的!!;
如果 我用 jobcode = jobcode.Trim().Substring(0,3); 就能获取正常的值
注: 直接用trim() 是不行的,必须用 substring 取前三位才能得到值
好多地方都有这样的现象 不知道谁能帮我啊!
分数不够可以再加! 急等回复! private string JobCodeName(string jobcode)
{
string jobCodetextname;
switch (jobcode)
{
case "301":
jobCodetextname = "理论";
break;
case "302":
jobCodetextname = "操作";
break;
case "3032":
jobCodetextname = "不定";
break;
}
return jobCodetextname;
}
using (OleDbConnection conn = new OleDbConnection(ConnectionString))
{
using (OleDbCommand comm = new OleDbCommand("p_start_compute", conn))
{
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add("p_ip", OleDbType.VarChar, 30).Value = userip;
comm.Parameters.Add("r_jobcode", OleDbType.VarChar, 10).Direction = ParameterDirection.Output;
comm.Parameters .Add ("r_code",OleDbType.Integer).Direction = ParameterDirection .ReturnValue;
conn.Open();
comm.ExecuteNonQuery();
if (comm.Parameters["r_code"].Value != null)
{
Jobcodetext.Text = JobCodeName(comm.Parameters["r_jobcode"].Value.ToString());
string aaa = Jobcodetext.Text;
int cc = aaa.Length;
}
}
}显示的 Jobcodetext.Text 的内容为: 301
aaa 的值为 “301”
而 cc 的值 却为 10
不知为何??然后调用 string ee = JobCodeName(aaa);在 vs2005开发环境下 ee 的值 等于 “理论”;
而发布到服务器上去 ee 的值 却是空的!!;
如果 我用 jobcode = jobcode.Trim().Substring(0,3); 就能获取正常的值
注: 直接用trim() 是不行的,必须用 substring 取前三位才能得到值
好多地方都有这样的现象 不知道谁能帮我啊!
分数不够可以再加! 急等回复! private string JobCodeName(string jobcode)
{
string jobCodetextname;
switch (jobcode)
{
case "301":
jobCodetextname = "理论";
break;
case "302":
jobCodetextname = "操作";
break;
case "3032":
jobCodetextname = "不定";
break;
}
return jobCodetextname;
}
取得的数据用TrimEnd去一下空格
另外你的代码有问题
数据库位长不定,设定为 varchar(2)20byte ;从存储过程输出的时候,是三位的;
另外,代码哪里有问题,请指教!