簡體   English   中英

如何在webservice中的oracle過程中存儲參數值

[英]How to store a parameter value in oracle procedure from webservice

所以我要做的是使用Web服務調用來實現oracle過程。 更具體一點:我是這樣的,當我將一個值放入我的Web服務中的參數並運行它時,我希望它是發送到oracle中的過程的值,然后成功運行后返回到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);

在我的記錄器中它表示游標必須實現為parameterdirection.output參數但是我不相信在這種情況下你可以獲取一個值並將其發送到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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM