FireDAC.Stan.Param.TFDParam.ArrayType

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

property ArrayType: TFDParamArrayType read FArrayType write SetArrayType default atScalar;

Propriétés

Type Visibilité  Source Unité  Parent
property published FireDAC.Stan.Param.pas FireDAC.Stan.Param TFDParam


Description

Représente le type d'un objet valeur de tableau TFDParam.

La propriété ArrayType représente le type d'un objet valeur de tableau TFDParam, qui peut être :

  • atScalar - un paramètre n'ayant pas une valeur de tableau.
  • atArray - un paramètre ayant une valeur de tableau, auquel cas le paramètre a une valeur de tableau et est unifié avec les autres paramètres. Il s'agit généralement d'un paramètre de commande Array DML.
  • atTable - un paramètre ayant une valeur de tableau, auquel cas le paramètre a un type de données de tableau spécifique au SGBD.

Exemple

Voici un extrait de code qui montre comment utiliser TFDParam.ArrayType=atTable pour envoyer des tableaux au serveur :

Delphi :

FDQuery1.SQL.Text := 'insert into FDQA_Array values (:id, :name, :items)';

FDQuery1.Params[0].AsInteger := 1;
FDQuery1.Params[1].AsString := 'test1';

// Setup array typed parameter
FDQuery1.Params[2].ArrayType := atTable;
FDQuery1.Params[2].ArraySize := 4;

// InterBase and Firebird require to specify full field name as parameter data type name
if (FDConnection1.RDBMSKind = TFDRDBMSKinds.Interbase) or (FDConnection1.RDBMSKind = TFDRDBMSKinds.Firebird) then
   FDQuery1.Params[2].DataTypeName := 'FDQA_ARRAY.ITEMS';

// Assign array type parameter values
FDQuery1.Params[2].AsStrings[0] := 'item1';
FDQuery1.Params[2].AsStrings[1] := 'item2';
FDQuery1.Params[2].AsStrings[2] := 'item3';
FDQuery1.Params[2].AsStrings[3] := 'item4';

// Execute SQL command
FDQuery1.ExecSQL;

C++:

FDQuery1->SQL->Text="Insert into FDQA_Array values (:id, :name, :items)";

FDQuery1->Params->Items[0]->AsInteger=1;
FDQuery1->Params->Items[1]->AsString="test1";

// Setup array typed parameter
FDQuery1->Params->Items[2]->ArrayType=atTable;
FDQuery1->Params->Items[2]->ArraySize=4;

// InterBase and Firebird require to specify full field name as parameter data type name
if (FDConnection1->RDBMSKind==TFDRDBMSKinds::Interbase || FDConnection1->RDBMSKind==TFDRDBMSKinds::Firebird)
    FDQuery1->Params->Items[2]->DataTypeName="FDQA_ARRAY.ITEMS";

// Assign array type parameter values
FDQuery1->Params->Items[2]->AsStrings[0]="item1";
FDQuery1->Params->Items[2]->AsStrings[1]="item2";
FDQuery1->Params->Items[2]->AsStrings[2]="item3";
FDQuery1->Params->Items[2]->AsStrings[3]="item4";

// Execute SQL command
FDQuery1->ExecSQL();
Remarque : Cet extrait de code fonctionne pour InterBase, Firebird et PostgreSQL.

Voir aussi