Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从webservice在oracle过程中存储参数值_C#_Oracle_Plsql - Fatal编程技术网

C# 如何从webservice在oracle过程中存储参数值

C# 如何从webservice在oracle过程中存储参数值,c#,oracle,plsql,C#,Oracle,Plsql,所以我想做的是使用web服务调用来实现oracle过程。更具体地说:我需要设置它,这样当我在web服务中的参数中输入一个值并运行它时,我希望该值是发送到oracle中的过程的值,然后在成功运行后作为true返回web服务 我目前尝试的是: public bool InsertMachineModels(string MachineModel) { logger.DebugFormat("FilteredReportInputsDAO.InsertMachi

所以我想做的是使用web服务调用来实现oracle过程。更具体地说:我需要设置它,这样当我在web服务中的参数中输入一个值并运行它时,我希望该值是发送到oracle中的过程的值,然后在成功运行后作为true返回web服务

我目前尝试的是:

        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);
在我的记录器中,它说必须将游标实现为参数direction.output参数,但我不相信在这种情况下,您可以获取一个值并将其发送到api,但如果我错了,请随时纠正我

所以我想我的问题是:如果我认为上面关于parameterdirection的陈述是正确的,那么正确的答案是什么

有谁能给我一些建议,告诉我如何正确实施我正在尝试做的事情


非常感谢您的帮助或建议。谢谢。

我认为您的问题在于:

cmd.Parameters.Add("pMachineModel", OracleType.Cursor).Value = 
    Convert.ToString(MachineModel);
您正在尝试添加类型为
OracleType.Cursor
的参数,该参数不正确或不必要。尝试将行更改为:

cmd.Parameters.Add("pMachineModel", OracleType.Char).Value = MachineModel;
(这里也不需要
Convert.ToString
-
MachineModel
已经是
字符串了)