我必须从 Oracle 函数中提取重新运行值,好吧
这是一个函数:
FUNCTION set_idoc
(Pidoctyp in varchar2, -- tip idoc-a
Pdirect in varchar2, -- smjer idoc-a
Psgln01 in varchar2, -- identifikator pošiljatelja
Prgln01 in varchar2, -- identifikator primatelja
Pdtdc01 in varchar2, -- datum i vrijeme kreiranja poruke
Pbodi01 in varchar2) -- identifikator
return number is
Lidoc_num NUMBER;
Lind_obr AGR3PL_IDOC.ind_obr%TYPE;
BEGIN
SELECT SEQ_IDOC.nextval, DECODE(Pdirect, '1', 'U', 'P')
INTO Lidoc_num, Lind_obr
FROM DUAL;
INSERT INTO AGR3PL_IDOC (idoc_num, direct, idoctyp, sgln01, rgln01, dtdc01, bodi01, ind_obr)
VALUES (Lidoc_num, Pdirect, Pidoctyp, Psgln01, Prgln01, Pdtdc01, Pbodi01, Lind_obr);
return Lidoc_num;
EXCEPTION
when others then raise;
END;
所以我需要提取 Lidoc_num 值
我尝试过这样的:
System.Data.OracleClient.OracleParameter Lidoc_num = new System.Data.OracleClient.OracleParameter();
Lidoc_num.Direction = ParameterDirection.ReturnValue;
Lidoc_num.Size = 16;
com1.Parameters.Add(Lidoc_num);
//Predaj parametre funkciji i vrati broj dokumneta iz baze
com1.CommandText = "TRB01.set_idoc('DOC','1','"
+ sender + "','"
+ reciver + "','"
+ cre_date + "','"
+ bod_ID + "')";
com1.ExecuteNonQuery();
Lidoc_num = com1.Parameters[0].Value;
但是什么都没有,那我该怎么做
谢谢前面!!
最佳答案
解决!! 它必须是这样的:
System.Data.OracleClient.OracleParameter prm = new System.Data.OracleClient.OracleParameter();
prm.Direction = ParameterDirection.ReturnValue;
prm.DbType = DbType.AnsiString;
prm.Size = 16;
com1.Parameters.Add(prm);
com1.CommandText = "TRB01.set_idoc('DOC','1','"
+ sender + "','"
+ reciver + "','"
+ cre_date + "','"
+ bod_ID + "')";
com1.ExecuteNonQuery();
Lidoc_num = com1.Parameters[0].Value.ToString();
关于c# - 从 ORACLE 函数中提取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781428/