Невозможно вызвать хранимую процедуру из кода, который работает при прямом обращении к базе данных - PullRequest
1 голос
/ 17 мая 2011

Я подключился к серверу Informix с помощью RazorSQL, создал хранимую процедуру и протестировал ее, получив ожидаемый ответ, поэтому процедура существует в базе данных в некоторой форме.

Затем я запускаю следующий код:

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 Ответ

1 голос
/ 17 мая 2011

Первое, что я хотел бы проверить - у вас есть права доступа к базе данных и к этой хранимой процедуре.

...