首页 新闻 会员 周边

oracle存储过程调用,很奇怪的问题。

0
悬赏园豆:10 [已关闭问题] 关闭于 2014-08-20 10:32

程序里面:

OracleDatabase dbSQL = DatabaseFactory.CreateDatabase() as OracleDatabase;
string strSql = "uspUpdateSysMenu";
OracleCommand dbCommand = dbSQL.GetStoredProcCommand(strSql) as OracleCommand;
try
{
OracleParameter[] parameters = {
new OracleParameter("P_MenuID", OracleType.NVarChar),
new OracleParameter("P_MenuName",OracleType.NVarChar),
new OracleParameter("P_MenuHref",OracleType.NVarChar),
new OracleParameter("P_MenuIndex",OracleType.Number),
new OracleParameter("P_ParentID",OracleType.NVarChar ),
new OracleParameter("P_Iconcss",OracleType.NVarChar),
new OracleParameter("P_Isexpand",OracleType.Number ),
new OracleParameter("P_IsMenu",OracleType.Number),

};
parameters[0].Value = model.MenuID;
parameters[1].Value = model.MenuName;
parameters[2].Value = model.MenuHref;
parameters[3].Value = model.MenuIndex;
parameters[4].Value = model.ParentID;
parameters[5].Value = model.Iconcss;
parameters[6].Value = model.Isexpand == false ? 0 : 1;
parameters[7].Value = model.IsMenu == false ? 0 : 1;
foreach (OracleParameter parameter in parameters)
{
dbCommand.Parameters.Add(parameter);
}
int iResult = dbSQL.ExecuteNonQuery(dbCommand);

 

存储过程:

CREATE OR REPLACE PROCEDURE APPRAISE_USER.uspupdatesysmenu (
p_menuid VARCHAR2,
p_menuname VARCHAR2,
p_menuhref VARCHAR2,
p_menuindex NUMBER,
p_parentid VARCHAR2,
p_iconcss VARCHAR2,
p_isexpand NUMBER,
p_ismenu NUMBER
)
AS
BEGIN
UPDATE sysmenu
SET menuname = p_menuname,
menuhref = p_menuhref,
menuindex = p_menuindex,
parentid = p_parentid,
iconcss = p_iconcss,
isexpand = p_isexpand,
ismenu = p_ismenu
WHERE menuid = p_menuid;

END;

  整个调用的过程没有出现任何异常,但是执行完存储过程以后,修改的信息没有任何变化,就跟没有执行存储过程一样,不明白怎么回事。

xyq_雨晴的主页 xyq_雨晴 | 初学一级 | 园豆:159
提问于:2014-08-18 14:35
< >
分享
所有回答(7)
0

貌似只是创建了个存储过程,但并没有调用语句,也就是没调用。

马路须横穿红灯要硬闯 | 园豆:199 (初学一级) | 2014-08-18 14:41

string strSql = "uspUpdateSysMenu";
OracleCommand dbCommand = dbSQL.GetStoredProcCommand(strSql) as OracleCommand;

这个就是程序里面调用的语句。

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-08-18 14:43
0

帮顶

迅捷网络[来送福利] | 园豆:576 (小虾三级) | 2014-08-18 14:46

满心欢喜的看见有人回复~~屁颠屁颠的打开一看,桑心的看见一个‘帮顶’

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-08-18 14:48
0

  你可以先调试一下你的sql代码,看看问题出在哪?

✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2014-08-18 14:48

oracle里面的存储过程在数据库里面执行是没有问题的。

支持(0) 反对(0) xyq_雨晴 | 园豆:159 (初学一级) | 2014-08-18 14:50
0
dudu | 园豆:31007 (高人七级) | 2014-08-18 14:54
0

dbCommand.CommandType = CommandType.StoredProcedure;加上这句话就对了

慕容展云 | 园豆:122 (初学一级) | 2014-08-18 15:50
0

同事帮忙找到答案了。我的那个主键menuid是char(10),比如'01010503  '后面会带两空格,很奇怪的是在PLSQL里面执行select语句、update语句时menuid='01010503'可以查出结果,但是在程序里面执行update存储过程的时候menuid='01010503'就不行,用menuid='01010503  '才可以。

xyq_雨晴 | 园豆:159 (初学一级) | 2014-08-18 16:30
0

你这不是企业库么,调用存储过程不用写这么复杂的代码吧,试试下面的方法

 var db = DatabaseFactory.CreateDatabase("");
                var command = db.GetStoredProcCommand("Proc_DepositTransfer");//存储过程
                db.AddInParameter(command, "@LandlordId", DbType.Int32, landlordId);
                db.AddInParameter(command, "@UserId", DbType.Int32, userId);
                db.AddInParameter(command, "@Deposit", DbType.Decimal, deposit);
                db.AddInParameter(command, "@Earnings", DbType.Int32, earnings);
                db.AddOutParameter(command, "@Return", DbType.Int32, 4);//输出参数
                db.ExecuteNonQuery(command);
                return (int)command.Parameters["@Return"].Value;

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-08-18 16:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册