Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
Asp.net ODP.NET VB.NET调用存储过程并返回refCursor_Asp.net_Vb.net_Oracle_Odp.net - Fatal编程技术网

Asp.net ODP.NET VB.NET调用存储过程并返回refCursor

Asp.net ODP.NET VB.NET调用存储过程并返回refCursor,asp.net,vb.net,oracle,odp.net,Asp.net,Vb.net,Oracle,Odp.net,这个问题已经让我发疯一天多了。我可以创建到数据库的连接,我可以执行sql并从中返回结果,但我似乎不能调用存储过程。这是密码 Dim myCMD As New OracleCommand Dim TheDataReader as New OracleDataReader myConnection1.Open() myCMD.Connection = myConnection1 myCMD.CommandType = CommandType.StoredP

这个问题已经让我发疯一天多了。我可以创建到数据库的连接,我可以执行sql并从中返回结果,但我似乎不能调用存储过程。这是密码

    Dim myCMD As New OracleCommand
    Dim TheDataReader as New OracleDataReader

    myConnection1.Open()

    myCMD.Connection = myConnection1
    myCMD.CommandType = CommandType.StoredProcedure
    myCMD.CommandText = "WS_DATA_LAYER.select_user_groups"

    myCMD.Parameters.Add(New OracleParameter("id_user", OracleDbType.VarChar2)).Value = "TXA"
    myCMD.Parameters.Add(New OracleParameter("ws_rs", OracleDbType.RefCursor)).Direction = ParameterDirection.Output

    ' Tried every single execute function here and none have worked
    ' Either error is thrown or empty refcursor
    myCMD.ExecuteScalar()

    TheDataReader = myCMD.Parameters(1).Value().GetDataReader()
目前的问题在于ExecuteScalar。它抛出了一个名为“输入字符串格式不正确”的异常。我尝试过用Oracle单引号传递字符串,得到了同样的结果。如果我使用

    TheDataReader = myCMD.ExecuteQuery()
它工作正常,但不返回任何结果。我已验证该过程是否为我登录的用户返回结果。当查询执行时,我可以在其中看到一个refcursor,但它是空的。我一定是疯了


感谢任何帮助

任何可能有此问题的人,我正在将OracleDBType.Varchar2作为参数传递给上述VB方法。但是我把它声明为一个整数,它需要作为OracleDBType显式传递

好吧,我是个白痴,请忽略这个问题。上面的代码很好,工作非常完美,我在这里简化了我的代码,让每个人都更容易阅读,然后测试了简化的代码,它工作了,所以我知道问题在哪里,可以开始缩小范围。因此,对于可能有此问题并因缺乏答案而愤怒的其他人,我将OracleDBType.Varchar2作为参数传递给上述VB方法。但是我将它声明为整数,它需要作为OracleDBType显式传递。将您的注释作为答案发布并接受它!