SP mit tabellarischen Daten aufrufen

Anfang  Zurück  Vor

Letzte Änderung 12.07.2016

 

 

SP Daten in einer XdevTable anzeigen

 

Beispiel Stored Procedure (Oracle) - Liefert alle Datensätze der Tabelle ACTOR zurück.

create or replace procedure "GETALLUSERS" (prc out sys_refcursor)
is
begin
open prc for select * from ACTOR;
end;

 

Beim Importieren der Stored Procedure GETALLUSERS wird bei der Datenquelle die Java Methode GETALLUSERS() generiert, mit der Sie die Stored Procedure aufrufen können.

 

1.Fügen Sie eine XdevTable per Drag&Drop aus der Palette in die Arbeitsfläche ein.

2.Ziehen Sie aus dem Fenster Stored Procedures eine Stored Procedure die tabellarische Daten zurückliefert, z.B. GETALLUSERS(),  per Drag&Drop auf die XdevTable.

 

Ergebnis zur Laufzeit:

clip0624

 

Generierter Code:

// Weist der table eine Virtuelle Tabelle zu, die mit der Methode 'GETALLUSERS' gefüllt wird

@EventHandlerDelegate void table_init() 
{
   try
   {
      table.setModel(SakilaDB.GETALLUSERS());
   }
   catch(DBException e)
   {
      // TODO Auto-generated code
      e.printStackTrace();
   }
}

 

 

 

SP Daten in XdevListBoxen und XdevComboBoxen anzeigen

 

Bei tabellarischen Daten kann 5 nicht automatisch ermitteln, welche Spalte in der XdevComboBox angezeigt werden soll (item) und welche Spalte die Primärschlüssel enthält (data). Beide Spalten müssen Sie im generierten Code deshalb manuell angeben, und zwar über den jeweiligen Index der Spalte. Die erste Spalte ACTOR_ID hat den Index 0. Die zweite Spalte ACTOR_NAME hat den Index 1 usw.

 

1.Fügen Sie eine XdevComboBox per Drag&Drop aus der Palette in die Arbeitsfläche ein.

2.Ziehen Sie aus dem Fenster Stored Procedures eine Stored Procedure die tabellarische Daten zurückliefert, z.B. GETALLUSERS(),  per Drag&Drop auf die XdevComboBox.

3.Geben Sie bei der XdevComboBox im generierten Code bei // TODO assign item column die Spalte mit den Werten an, die in der XdevComboBox angezeigt werden sollen, z.B. 1 für die Spalte FIRST_NAME. Die erste Spalte hat den Index 0.

4.Geben Sie bei // TODO assign data column die Spalte an, welche die Primärschlüssel enthält, z.B. 0 für die Spalte ACTOR_ID. Die erste Spalte hat den Index 0.

@EventHandlerDelegate void comboBox_init() 
{
   VirtualTable vt = null;
   try
   {
      vt = SakilaDB.GETALLUSERS();
   }
   catch(DBException e)
   {
      // TODO Auto-generated code
      e.printStackTrace();
   }
   if(vt != null)
   {
      String itemCol = vt.getColumnName(1); // TODO assign item column
      String dataCol = vt.getColumnName(0); // TODO assign data column
      comboBox.setModel(vt,itemCol,dataCol);
   }
}

 

 

Ergebnis zur Laufzeit:

clip0629

 

 

SP Daten in Virtuellen Tabelle übertragen

 

Da durch den Aufruf der Stored Procedure die Daten als Virtuelle Tabelle zurückgelieferten werden, können Sie die Daten sehr leicht in eine anderen Virtuellen Tabelle übertragen. Anschließend können Sie auf die neue Virtuelle Tabelle wie gewohnt zugreifen, um Daten auszulesen, zu sortieren, zu ändern und zu speichern.

 

VirtualTable AllUsers = SakilaDB.GETALLUSERS();

 

Wenn die Tabelle ALLUSERS als Virtuelle Tabelle in XDEV 5 importiert wurde und damit im ER-Diagramm (AllUsers.VT) vorhanden ist, kann diese Virtuelle Tabelle auch wie gewohnt mit der Datenbank synchronisiert werden.

 

Tipp: Wenn die Datenbanktabelle ACTOR als Virtuelle Tabelle in XDEV 5 importiert wurde (Actor.VT) und  im ER-Diagramm vorhanden ist, kann die Virtuelle Tabelle die das Ergebnis der Stored Procedure aufnimmt, wie gewohnt mit der Datenbanktabelle synchronisiert werden.

VirtualTable Actor = SakilaDB.GETALLUSERS();

Actor.synchronizeChangedRows();