asp.net中调用oracle 9i中的存储过程的请教
下面这段代码是我在Oracle 9i的方案下的enshi2004用户下根据向导定义的
(
p_id in number
)
as
begin
declare x number(30);
begin
select count(*) into x from enshi2004.cgfgxx where id = p_id;
if x > 0 then
insert into enshi2004.testclob values (555,'ft','hehe');
else
insert into enshi2004.testclob values (999,'ft','hehe');
end if;
end;
end usp_test;
我在一个测试页面中使用的代码如下:
[color=#DC143C]String strConnect = System.Configuration.ConfigurationSettings.AppSettings["strConnectDB"].ToString(); //这条
语句是从web.config中取得连接字符串
OracleConnection oraConn = new OracleConnection(strConnect);
OracleCommand myCommand = new OracleCommand("enshi2004.usp_test",oraConn);[/color]
//其中enshi2004是我的一个用户名,我所使用的表和存储过程都是这个用户的。usp_test是存储过程名。见上。
[color=#DC143C]myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("@p_id",245);
oraConn.Open();
myCommand.ExecuteNonQuery();[/color]
//每次总是这里出错,好像是调用存储过程出现的问题
oraConn.Close();
Response.Write("Success!");
提示错误如下:
ORA-01036: 非法的变量名/编号
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OracleClient.OracleException: ORA-01036: 非法的变量名/编号
源错误:
行 34: myCommand.Parameters.Add("@p_id",245);
行 35: oraConn.Open();
[color=#FF4500]行 36: myCommand.ExecuteNonQuery();[/color]行 37: //每次总是这里出错,
好像是调用存储过程出现的问题
行 38:
源文件: d:\保留\enshi\kjcgxx\testusp.aspx.cs 行: 36
请大虾指教!
谢谢!
问题点数:0、回复次数:3Top
1 楼jiezhi(风满袖)回复于 2004-05-05 12:42:40 得分 0
先在sqlplus里面验证你的存储过程能顺利执行,然后再到asp.net里面调试。Top
2 楼wyytht(伪随机)回复于 2004-05-05 20:24:00 得分 0
sql plus里面执行一点问题都没有。
我现在把调用存储过程的语句改成了
String strConnect = System.Configuration.ConfigurationSettings.AppSettings["strConnectDB"].ToString();
OracleConnection oraConn = new OracleConnection(strConnect);
OracleCommand myCommand = new OracleCommand();
myCommand.Connection = oraConn;
OracleParameterCollection myParamCollection = myCommand.Parameters;
OracleParameter myNewParameter = myParamCollection.Add("p_id", Convert.ToInt32("245"));
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.CommandText = "execute enshi2004.usp_test()";
oraConn.Open();
myCommand.ExecuteNonQuery ();
//每次总是这里出错,好像是调用存储过程出现的问题
oraConn.Close();
Response.Write("Success!");
但是,还是出错,提示错误是:
ORA-06550: 第 1 行, 第 15 列: PLS-00103: 出现符号 "ENSHI2004"在需要下列之一时: := . ( @ % ; immediate 符号 ":=" 被替换为 "ENSHI2004" 后继续。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 15 列: PLS-00103: 出现符号 "ENSHI2004"在需要下列之一时: := . ( @ % ; immediate 符号 ":=" 被替换为 "ENSHI2004" 后继续。
源错误:
行 42:
行 43: oraConn.Open();
行 44: myCommand.ExecuteNonQuery ();
行 45: //每次总是这里出错,好像是调用存储过程出现的问题
行 46:
源文件: d:\保留\enshi\kjcgxx\testusp.aspx.cs 行: 44Top
3 楼qcf2003(qcf)回复于 2004-06-09 17:21:02 得分 0
OracleCommand myCommand = new OracleCommand("usp_test",oraConn)myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("p_id",245);Top




