Как вызвать функцию Oracle с помощью Asp.net Web Api - PullRequest
0 голосов
/ 08 января 2019

Я работаю над проектом и хочу вызвать функцию Oracle, используя веб-API Asp.Net. В настоящее время я работаю с StoredProcedure и он работает нормально. Я хочу, чтобы, если моя запись была отправлена, она возвращает мне некоторое возвращаемое значение. Мой код веб-интерфейса ASp.NEt и функция Oracle приведены ниже:

 for (int i = 0; i < user.Count; i++)
            {

                var sParameter = new List<OracleParameter>();
                sParameter.Add(new OracleParameter { ParameterName = "@CRD_COD", Value = user[i].CRD_COD });
                sParameter.Add(new OracleParameter { ParameterName = "@ITM_COD", Value = user[i].ITM_COD });
                sParameter.Add(new OracleParameter { ParameterName = "@SRL_NUM", Value = user[i].SRL_NUM });
                sParameter.Add(new OracleParameter { ParameterName = "@UOM_ABR", Value = user[i].UOM_ABR });
                sParameter.Add(new OracleParameter { ParameterName = "@QTD_RTE", Value = user[i].QTD_RTE });
                sParameter.Add(new OracleParameter { ParameterName = "@QTY_PRC", Value = user[i].QTY_PRC });
                sParameter.Add(new OracleParameter { ParameterName = "@QTN_NUM", Value = user[i].QTN_NUM });
                sParameter.Add(new OracleParameter { ParameterName = "@PMT_FLG", Value = user[i].PMT_FLG });
                sParameter.Add(new OracleParameter { ParameterName = "@TAX_FLG", Value = user[i].TAX_FLG });
                sParameter.Add(new OracleParameter { ParameterName = "@DLV_FLG", Value = user[i].DLV_FLG });                    
                result = Convert.ToInt32(ADOManager.Instance.ExecuteNonQuery("NML.AddProduct", CommandType.Text, sParameter));                
           }

Вот функция Oracle

CREATE OR REPLACE FUNCTION NML.AddProduct(V_CRD_COD In varchar2,
                                        V_ITM_COD In varchar2,
                                        V_SRL_NUM In varchar2,
                                        V_UOM_ABR IN varchar2,
                                        V_QTD_RTE IN varchar2,
                                        V_QTY_PRC In varchar2,
                                        V_QTN_NUM IN varchar2,
                                        V_PMT_FLG IN varchar2,
                                        V_TAX_FLG IN varchar2,
                                        V_DLV_FLG IN varchar2
                                        )
                                        RETURN NUMBER                                      
IS

НАЧАТЬ ЕСЛИ SQL% НАЙДЕН ВОЗВРАТ (1); ELSE RETURN (1);
END IF; Исключение, когда другие, то
ВОЗВРАТ (1); END;

Любая помощь будет оценена. Большое спасибо

1 Ответ

0 голосов
/ 08 января 2019

Вы пытались выполнить оператор select, который вызывает функцию?

.ExecuteScalar ("ВЫБЕРИТЕ NML.AddProduct (V_CRD_COD, V_ITM_COD, V_SRL_NUM, V_UOM_ABR, V_QTD_RTE, V_QTY_PRC, V_QTN_NUM, V_PMT_FLG, V_TA_LF_LV_FLF))

...