从 ORACLE 函数中提取返回值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10781428/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 00:51:22 来源:igfitidea点击:
Extract return value from ORACLE function
提问by CrBruno
I have to extract a retrun value from Oracle function, ok here goes
我必须从 Oracle 函数中提取一个重运行值,好的
This is a function:
这是一个函数:
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;
So i nedd to extract a Lidoc_num value
所以我需要提取一个 Lidoc_num 值
I tried like this:
我试过这样:
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;
But nothing, so how can I do this
但没什么,所以我怎么能做到这一点
Thanks infront!!
谢谢楼上!!
回答by CrBruno
Solve it!! It has to be like this:
解决这个问题!!它必须是这样的:
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();