无法从直接调用数据库的代码调用存储过程

时间:2011-05-17 09:28:59

标签: .net sql vb.net stored-procedures informix

我使用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连接调用存储过程时不会发生此错误。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我要检查的第一件事是用户是否拥有数据库和该存储过程的权限。