Работа с параметрами хранимой процедуры Firebird в AccessИсточник: sgml
Для передачи и возврата параметров при работе со скалярной хранимой процедурой 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 пока может быть использован только для передачи параметров, но не для возврата. |