写了一个存储过程如下
CREATE OR REPLACE PACKAGE PKG_AUTHORITY
AS
   FUNCTION FNC_TEST(
        IN_AUTH_CD         IN VARCHAR2
   )RETURN VARCHAR2;   PROCEDURE PRC_TEST(
        IN_AUTH_CD         IN VARCHAR2
        ,OT_RES_VALUE      OUT VARCHAR2
   );END PKG_AUTHORITY;CREATE OR REPLACE PACKAGE BODY PKG_AUTHORITY
AS
   FUNCTION FNC_TEST(
        IN_AUTH_CD         IN VARCHAR2
   )RETURN VARCHAR2
   IS
   BEGIN
      IF      IN_AUTH_CD = 'A'   THEN
               RETURN  'FALSE';
       ELSE
               RETURN  'TRUE';
       END IF;
   END FNC_TEST;
   
   PROCEDURE PRC_TEST(
        IN_AUTH_CD         IN VARCHAR2
        ,OT_RES_VALUE      OUT VARCHAR2
   )
   IS
   BEGIN
      IF      IN_AUTH_CD = 'A'   THEN
               OT_RES_VALUE := 'FALSE';
       ELSE
               OT_RES_VALUE := 'TRUE';
       END IF;
   END PRC_TEST;
END PKG_AUTHORITY;用ODP.NET调用存储过程时怎么设置参数。下面这样我试过了,不行
           Dim param() As OracleParameter = {New OracleParameter(":IN_AUTH_CD", OracleDbType.Varchar2) _
                                                 , New OracleParameter(":OT_RETURN_VALLUE", OracleDbType.Varchar2)}
           param(0).Value = "1"
           param(0).Direction = ParameterDirection.Input
           param(1).Direction = ParameterDirection.Output附带说一句,我看了ODP.NET的例子,例子的参数要不都是in,要不都是out,实际上开发的
不可能这样。 

解决方案 »

  1.   

    //===c#访问存储过程。
    和一般返回結果集合的存儲過程的用法一樣,只是需要加包名。
    ...
    SqlCommand sampleCMD = new SqlCommand("Package.ProName", myConn);
    sampleCMD.CommandType = CommandType.StoredProcedure;
    ...myC
    Dim myConnection As New OracleConnection(connectstring)
            myConnection.Open()
            Dim myCommand As New OracleCommand()
            myCommand.Connection = myConnection
            myCommand.CommandType = CommandType.StoredProcedure        myCommand.CommandText = "packagename.procedurename"        myCommand.Parameters.Add("CURSORname", OracleType.Cursor).Direction = ParameterDirection.Output        Dim myReader As OracleDataReader
            myReader = myCommand.ExecuteReader()        ListBox2.DataSource = myReader
            ListBox2.DataTextField = "PROJECTNAME"
            ListBox2.DataBind()
            ListBox2.SelectedIndex = 0        myReader.Close()
            myConnection.Close()
            myReader = Nothing
            myConnection = Nothing
      

  2.   

    看下这个:
    http://211.99.196.144:8090/forum1/frontshow/dispbbs.jsp?boardid=106&id=3818