在.NET中的包中运行Oracle函数而不是存储过程

时间:2015-09-20 11:51:54

标签: c# .net vb.net oracle

我使用的是商业供应商API,并且需要按照其部分说明进行帮助:

API文件摘要: 7)下一步是使用以下oracle函数找到ELEMENT_ID。

nElementID:= PK_TMX_STORAGE_MANAGEMENT.F_FIND_ID_BY_ADDRESS('FF-S01-R01-T01-001',nBankID);

我需要在VB.Net webservice中运行此函数(C#代码也可以)并且我不确定语法。我是否将其作为存储过程运行,如果是这样,我如何将两个变量('FF-S01-R01-T01-001',nBankID)传递给函数。

或者我以某种方式将它包装在Select Statement中,如果需要FROM TABLE?

我知道存储的过程和函数很接近,但我遇到了systax的问题​​。

我回来了 ORA-06550:第1行第7列: PLS-00221:' F_FIND_ID_BY_ADDRESS'不是程序或未定义 ORA-06550:第1行第7列: PL / SQL:语句忽略错误

由于

1 个答案:

答案 0 :(得分:0)

     Dim str As String = "PK_TMX_STORAGE_MANAGEMENT.F_FIND_ID_BY_ADDRESS"
        Dim OracleCMD As OracleCommand = New OracleCommand(str, OracleConn)
        OracleCMD.CommandType = CommandType.StoredProcedure                 
        DIM ELEMENT_ID as  OracleParameter  = new OracleParameter("ELEMENT_ID",OracleDbType.Int32)
    ELEMENT_ID.Direction = ParameterDirection.ReturnValue
    OracleCMD.Parameters.Add(ELEMENT_ID)

         OracleCMD.Parameters.Add(New OracleParameter("ADDRESS", OracleDbType.VARCHAR2, ParameterDirection.Input)).Value = STORAGE_ADDRESS
         OracleCMD.Parameters.Add(New OracleParameter("BANK_ID", OracleDbType.Int32 , ParameterDirection.Input)).Value = BANK_ID
                    OracleConn.Open()   
        OracleCMD.ExecuteNonQuery()
                Return System.Convert.ToString(OracleCMD.Parameters("ELEMENT_ID").Value )
        OracleConn.Close()
相关问题