Работа с параметрами хранимой процедуры Firebird в Access

Для передачи и возврата параметров при работе со скалярной хранимой процедурой Firebird (далее ХП) можно использовать вполне стандартный метод:

Public Sub Test()

Dim ws As Workspace
Dim cnn As Connection
Dim qdf As QueryDef
Dim dsn As String

    dsn = "ODBC;DSN=FB Gemini;UID=SYSDBA;PWD=masterkey;"
    Set ws = DBEngine.CreateWorkspace("", "", "", dbUseODBC)
    Set cnn = ws.OpenConnection("cnn", , , dsn)
    Set qdf = cnn.CreateQueryDef("", "EXECUTE PROCEDURE SP_TEST ?")
    qdf.Parameters(0).Direction = dbParamInput
    qdf.Parameters(0).Value = 100
    qdf.Parameters(1).Direction = dbParamOutput
    qdf.Execute
    
    MsgBox qdf.Parameters(0).Value & " x 2 = " & qdf.Parameters(1).Value

End Sub

Здесь в качестве примера использована очень простая ХП, которая возвращает удвоенное значение передаваемого ей аргумента:

SET TERM !! ;

CREATE PROCEDURE SP_TEST (NUM INTEGER) 
                 RETURNS (NUM2 INTEGER)
AS
BEGIN
    NUM2=NUM * 2;
END !!

SET TERM ; !!

Важными в данном случае являются два момента:

  1. Хотя параметров у этой ХП два, в её вызов подставляется только один вопросительный знак, т.е. ровно столько, сколько передаётся в ХП. Количество возвращаемых параметров Access определяет сам.
  2. Не любой ODBC драйвер обеспечивает такую функциональность. Так, например, Gemini InterBase ODBC Driver версии 2.0 годится, а XTG Systems InterBase6 ODBC driver пока может быть использован только для передачи параметров, но не для возврата.

Смирнов Сергей Юрьевич (SSY) ssmirnov@fromru.com



Опубликовал admin
22 Сен, Среда 2004г.



Программирование для чайников.