Direction: DalParamDirection;
Свойство Direction определяет предназначение параметра SQL-запроса.
По умолчанию свойству установлено значение DalParamDirection.Input.
Для выполнения примера предполагается наличие в репозитории базы данных с идентификатором "BD". На сервере, на который настроена данная база данных, имеется функция "Func_1", вычисляющая какое-либо значение.
Sub Main;
Var
MB: IMetabase;
DB: IDatabaseInstance;
Com: IDalCommand;
v: Variant;
Begin
MB := MetabaseClass.Active;
DB := MB.ItemById("BD").Open(Null) As IDatabaseInstance;
Com := DB.Connection.CreateCommand("");
Com.Type := DalCommandType.StoredProcedure;
Com.SQL := "Func_1";
Com.Params.Add("Param").Direction := DalParamDirection.ReturnValue;
Com.Execute;
v := Com.Params.Item(0).Value;
Com.Close;
End Sub Main;
После выполнения примера будет создана команда, выполняющая хранимые на сервере функции или процедуры. Для команды будет создан один параметр, в который возвращается результат выполнения функции. После выполнения команды в переменной "v" будет содержаться результат выполнения функции "Func_1".
Sub Main;
Var
Driv: IDalDriver;
Connect: IDalConnection;
Command: IDalCommand;
ConnectDesc: IDalConnectionDescriptor;
ConnectDescParams: IDalConnectionDescriptorParams;
Cur: IDalCursor;
f: IDalCursorField;
Begin
Driv := New DalOrcl8Driver.Create;
ConnectDesc := Driv.CreateDescriptor;
ConnectDescParams := ConnectDesc.Params;
ConnectDescParams.Find("User Name").Value := "TestUser";
ConnectDescParams.Find("Password").Value := "TestUser";
ConnectDescParams.Find("Host BSTR").Value := "Test";
ConnectDescParams.Find("Schema").Value := "TestShema";
Connect := ConnectDesc.CreateConnection;
Command := Connect.CreateCommand;
Command.SQL := "Begin" + #13 + #10 +
"OPEN :Cursor1 For Select * From Table_1;" + #13 + #10 +
"End;";
Command.Parse;
Command.Params.Item(0).Direction := DalParamDirection.RefCursor;
Command.Execute;
Cur := Command.Params.Item(0).Value As IDalCursor;
While Not Cur.Eof Do
For Each f In Cur.Fields Do
Debug.Write(f.Value + " ");
End For;
Debug.WriteLine("");
Cur.Next;
End While;
Cur.Close;
Command.Close;
Connect.Close;
End Sub Main;
После выполнения примера произойдет подключение к схеме «TestShema», расположенной на сервере «Test». Подключение осуществляется с использованием драйвера для работы с СУБД Oracle 9.x\10.x\11.x. В рамках схемы будет выполнена процедура, возвращающая курсор, содержащий все записи таблицы «Table_1». Курсор будет получен через первый параметр команды. Значения всех полей по всем записям будут выведены в консоль среды разработки.
См. также: