Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C调用Oracle中的存储过程#_C#_Asp.net_Oracle_Stored Procedures - Fatal编程技术网

C# 从C调用Oracle中的存储过程#

C# 从C调用Oracle中的存储过程#,c#,asp.net,oracle,stored-procedures,C#,Asp.net,Oracle,Stored Procedures,我有一个带有文本框的页面,该文本框通过Oracle中的存储过程传递值。该过程已更改,因此现在有两个参数,一个用于输入值,另一个用于返回整数值 以下是Oracle过程: procedure UnoxDataFix(p_shpmt_nbr in pkms.asn_hdr.shpmt_nbr%type, retval out integer) is begin retval:=0; for r in ( -- simple select statement

我有一个带有文本框的页面,该文本框通过Oracle中的存储过程传递值。该过程已更改,因此现在有两个参数,一个用于输入值,另一个用于返回整数值

以下是Oracle过程:

procedure UnoxDataFix(p_shpmt_nbr in pkms.asn_hdr.shpmt_nbr%type, retval out integer) is
  begin
  retval:=0;
    for r in (
        -- simple select statement
        )
    loop    
     if(r.stat_code = 10 and r.whse_xfer_flag = 'Y')
     then     
        update pkms.asn_dtl ad 
          -- simple set statement
        update pkms.asn_hdr ah
          -- simple set statement
          where ah.shpmt_nbr = p_shpmt_nbr
           RETURNING 1 into retval;
        commit;   
      end if;    
    end loop;
  end;
这是我的核心C代码:

this.oraServer.ExecuteNonQuery(this.connectionString, CommandType.Text, "begin INTEGRATION.UnoxDataFix('" + input + "'); end;");
连接字符串可以工作。这只是给出错误的实际过程。“输入”值是发送到程序的实际值。但是对于将“retval”返回到站点,我不知道如何返回。我试着用谷歌搜索我能搜索到的东西,但没用。
我有点慢,所以欢迎大家发表意见。:)

因为该过程现在需要两个参数,所以您需要给出两个参数,而不仅仅是输入参数。 此外,我更喜欢使用绑定变量来防止sql注入。(是的,您也可以将绑定变量用于OUT参数)

我不熟悉C#的细节,因此我无法帮助您使用插入和检索值的确切方法

另一方面,这是什么样的命名约定?你的目标是不可读吗?:)

包装编号:asn\U hdr.shpmt\U nbr


看见去掉begin/end语句。CommandText中应仅显示函数名。您需要添加与CommandText分开的参数。@Sliveninja谢谢,这很有帮助:)谢谢您的提示。我可以使用绑定变量,但这对C#如何从过程中获取返回值没有帮助。“顺便说一句,这是什么样的命名约定?你的目标是不可读吗?:)“是的,我知道你的意思,名字很难读:)
begin INTEGRATION.UnoxDataFix(:input, :retval); end;