这个问题让我疯了一天多了。我可以创建一个到数据库的连接,我可以执行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,但它是空的。我一定是疯了。
感谢任何帮助
答案 0 :(得分:1)
其他可能有这个问题的人,我把OracleDBType.Varchar2作为参数传递给上面的VB方法。但我把它声明为一个整数,它需要显式传递为OracleDBType