【问题标题】:Cannot call stored procedure from code which works on direct call to database无法从直接调用数据库的代码调用存储过程
【发布时间】:2011-05-17 09:28:59
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • informix 有sysprocedures 目录吗?

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


【解决方案1】:

我要检查的第一件事是您的用户对数据库以及该存储过程具有权限。

【讨论】:

  • 该死的。在自动访问特定 Informix 用户名/密码之前,我一直在处理的这些程序都是通过对 SQL Server 实例的用户凭据的主要检查来创建的。 这个 程序只是用他们通常的登录名将他们直接记录到 Informix 数据库中。好吧,我看起来像个白痴,没有先检查,但这看起来是问题的根源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多