c# - 从 ORACLE 函数中提取返回值

标签 c# oracle

我必须从 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/

相关文章:

c# - 如何使我的 Web 项目中的链接图像出现在我的本地开发 Web 服务器上?

c# - 如何转义c#中的关键字?

使用 group by 的 SQL 查询并计算联接中的某些行

java - JTable 不显示新插入的行/数据

oracle - NULL或空白字段(ORACLE)

c# - Range 对象中的 Min (5) 必须小于或等于 max (-1)?

C# - 无需端口转发即可远程控制 PC(如 TeamViewer)

c# - 按位/ bool 值选择

sql - 如果仅按日和月的日期相同,则使用 Oracle SQL 比较两个日期

sql - Oracle - 如何根据属性记录对关系执行规则(简单示例)