我使用RazorSQL连接到Informix服务器,创建了一个存储过程并对其进行了测试,得到了预期的答案,因此该过程以某种形式存在于数据库中。
然后我运行以下代码:
If ConnectToInformix() Then
Dim cmd As New IfxCommand("dc_routeHasOutstandingQuantity", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New IfxParameter("WorksOrder", wo_num))
cmd.Parameters.Add(New IfxParameter("CompNo", IBM.Data.Informix.IfxType.SmallInt)).Value = CType(compNo, Int16)
rdr = cmd.ExecuteReader
为了完整起见,这里是ConnectToInformix函数。
Private Function ConnectToInformix() As Boolean
Try
If conn Is Nothing Then
conn = New IfxConnection
conn.ConnectionString = ConnectionString
End If
If conn.State = System.Data.ConnectionState.Closed Then
conn.Open()
End If
Return True
Catch ex As System.Exception
conn.Dispose()
conn = Nothing
Return False
End Try
End Function
ConnectToInformix函数适用于此程序生成的每个其他Informix连接,但这是第一个使用的Informix存储过程,所以也许有一些特殊的魔法我必须处理连接......
无论如何,当我尝试在rdr = cmd.ExecuteReader
行上调用存储过程时,我收到以下错误:
ERROR [HY000] [Informix .NET provider][Informix]Cannot read system catalog (sysprocedures).
从实时SQL连接调用存储过程时不会发生此错误。
我做错了什么?
答案 0 :(得分:1)
我要检查的第一件事是用户是否拥有数据库和该存储过程的权限。