如何从webservice在oracle过程中存储参数值
本文关键字:过程中 存储 参数 oracle webservice | 更新日期: 2023-09-27 18:10:37
所以我要做的是使用web服务调用来实现oracle过程。更具体地说:我是这样做的,当我在web服务中输入一个值并运行它时,我希望它是发送给oracle过程的值,然后在成功运行后返回到web服务为true。
我现在要做的是:
public bool InsertMachineModels(string MachineModel)
{
logger.DebugFormat("FilteredReportInputsDAO.InsertMachineModel({0})", MachineModel);
bool retVal = true;
using (OracleConnection conn = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand("Admin_Utilities.InsertMachineModel", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pMachineModel", OracleType.Cursor).Value = Convert.ToString(MachineModel);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
if (IsErrorLogging)
logger.Error("FilteredReportInputsDAO.InsertMachineModels() Exception: ", ex);
retVal = false;
}
finally
{
conn.Close();
}
}
}
return retVal;
}
下面你会发现我的程序在sql developer中实现时正确运行。
procedure InsertMachineModel( pMachineModel in nvarchar2)
is
begin
insert into machine_models (Machine_model) values (pMachineModel);
commit;
Exception when others then
pb_util.logdata(1, 'Admin_utilities.InsertMachineModel', 'Exception thrown', sqlerrm || ' stack ' || dbms_utility.format_error_backtrace);
rollback;
raise;
end;
我认为问题出在web服务中的这一行:
cmd.Parameters.Add("pMachineModel", OracleType.Cursor).Value = Convert.ToString(MachineModel);
在我的日志中,它说游标必须作为参数方向实现。输出参数,但我不相信在这种情况下,你可以采取一个值,并将其发送到api,但如果我错了,请随时纠正我。
所以我想我的问题是:如果我认为在上面关于参数方向的陈述是正确的是错误的,正确的答案是什么?
谁能给我任何建议,如何实现我正试图正确地做什么?
任何帮助或建议都是非常感谢的。谢谢你。我想你的问题在这一行:
cmd.Parameters.Add("pMachineModel", OracleType.Cursor).Value =
Convert.ToString(MachineModel);
您正在尝试添加类型为OracleType.Cursor
的参数,这是不正确或不必要的。试着把这行改成这样:
cmd.Parameters.Add("pMachineModel", OracleType.Char).Value = MachineModel;
(这里也不需要Convert.ToString
- MachineModel
已经是String
了)