PL/SQL中的函式及其引數如下:
PACKAGE:U1BP.pxf000bdzrf
FUNCTION getEcCheckBDW31(
p_co VARCHAR2, IN==> 公司
p_empid VARCHAR2, IN==> 員工代號
p_boffid VARCHAR2, IN==>差假代號
p_frday VARCHAR2, IN==>差假起日
p_frhh VARCHAR2, IN==>差假起時
p_today VARCHAR2, IN==>差假迄日
p_tohh VARCHAR2, IN==>差假迄時
p_dys NUMBER, IN==>日數
p_hrs NUMBER, IN==>時數
p_nl VARCHAR2, IN==>NL紀錄,N表示正常,L表示洗掉
p_odupz VARCHAR2, IN==>出勤廠區
p_odudp VARCHAR2, IN==>出勤部門
p_ajmk VARCHAR2, IN==>調整注記
p_boffidclass VARCHAR2) IN==>差假代號類別,固定為BOFFID
RETURN VARCHAR2 OUT==> 回傳的錯誤訊息
我對應寫的C#代碼如下:
public static void ChaiJiaDan(int flag, string strName, params Object[] paras)//主表傳入ERP方法,接受兩個引數,第一個是檔案所提供的傳ERP存盤程序
{
constring[0] = "server=bhhg;uid=u1bs2;pwd=u1bs2";
constring[1] = "server=bhzy;uid=u1bs2;pwd=u1bs2";
constring[2] = "server=bhfd;uid=u1bs2;pwd=u1bs2";
constring[3] = "server=bhgj;uid=u1bs2;pwd=u1bs2";
//第二個引數是接收一個陣列,該陣列里面是對應的表單欄位
using (OracleConnection conn = new OracleConnection(constring[flag]))//資料庫連接字串
{
OracleCommand cmd = new OracleCommand(strName, conn);//創建一個執行陳述句的物件
OracleParameter[] para = new OracleParameter[]
{
new OracleParameter("p_co",OracleType.VarChar), //以下為ERP接收的欄位,跟檔案上保持一致
new OracleParameter("p_empid",OracleType.VarChar),
new OracleParameter("p_boffid",OracleType.VarChar),
new OracleParameter("p_frday",OracleType.VarChar),
new OracleParameter("p_frhh",OracleType.VarChar),
new OracleParameter("p_today",OracleType.VarChar),
new OracleParameter("p_tohh",OracleType.VarChar),
new OracleParameter("p_dys",OracleType.Number),
new OracleParameter("p_hrs",OracleType.Number),
new OracleParameter("p_nl",OracleType.VarChar),
new OracleParameter("p_odupz",OracleType.VarChar),
new OracleParameter("p_odudp",OracleType.VarChar),
new OracleParameter("p_ajmk",OracleType.VarChar),
new OracleParameter("p_boffidclass",OracleType.VarChar)
};
for (int i = 0; i < paras.Length; i++)
{
para[i].Value = paras[i];
}
cmd.Parameters.AddRange(para);
OracleParameter res = new OracleParameter("wrk_message", OracleType.VarChar, 100);
res.Direction = ParameterDirection.ReturnValue;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNonQuery(); //執行傳ERP操作
string temp = res.Value.ToString();
if (temp != "") //判斷是否操作成功
{
throw new Exception(string.Format("未執行成功,錯誤代號是{0}", temp));
}
conn.Close();
}
}
執行老是報錯!說“不是程序或函式未定義”
求大神幫忙解決!
uj5u.com熱心網友回復:
函式呼叫,要用select fn(引數1,引數2,,,) from dual
直接寫一個函式名,像是再執行一個存盤程序。
uj5u.com熱心網友回復:
樓主,你的主方法中缺少getEcCheckBDW31的呼叫。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/82523.html
標籤:開發
