5.A.1.7.4.1. Schemat i nazwa tabeli Oracle

Poniższy kod można umieścić w konfiguracji skyptów akcji by podpiąć go do listy tabel wtyczki obsługi bazy danych Oracle.
Przykład oprócz sposobu użycia samego BeanShell pokazuje w jaki sposób dostać się do danych zawartych na liście wyników.

Tytuł akcji: Jaka to tabela (przykład BeanShell)
Klucz akcji: oracle-tables-actions

import pl.mpak.orbada.gui.comps.table.ViewTable;
import pl.mpak.sky.gui.mr.ModalResult;
import pl.mpak.sky.gui.swing.MessageBox;
import pl.mpak.usedb.util.SQLUtil;

if (component instanceof ViewTable) {
  ViewTable vt = (ViewTable)component;
  if (vt.getSelectedRow() >= 0) {
    try {
      vt.getQuery().getRecord(vt.getSelectedRow());
      String schemaName = vt.getQuery().fieldByName("schema_name").getString();
      String tableName = vt.getQuery().fieldByName("table_name").getString();
      MessageBox.show(SQLUtil.createSqlName(schemaName, tableName));
    } catch (Exception ex) {
      MessageBox.show("Błąd", ex.getMessage(), ModalResult.OK);
    }
  }
}

5.A.1.7.4.2. Szybkie kopiowanie DLL tabeli

Poniższy kod można umieścić w konfiguracji skyptów akcji by podpiąć go do listy tabel wtyczki obsługi bazy danych Oracle.
Przykład pokazuje w jaki sposób można użyć obiektu SourceCreator z wtyczki Oracle oraz skopiować wynik do schowka systemu operacyjnego.

Action title: Szybkie kopiowanie DDL (przykład BeanShell)
Action key: oracle-tables-actions

import pl.mpak.orbada.gui.comps.table.ViewTable;
import pl.mpak.sky.gui.mr.ModalResult;
import pl.mpak.sky.gui.swing.MessageBox;
import pl.mpak.orbada.oracle.util.SourceCreator;
import pl.mpak.util.TextTransfer;

if (component instanceof ViewTable) {
  ViewTable vt = (ViewTable)component;
  if (vt.getSelectedRow() >= 0) {
    try {
      vt.getQuery().getRecord(vt.getSelectedRow());
      new TextTransfer().setClipboardContents(
        new SourceCreator(database, null).getSource(
          vt.getQuery().fieldByName("schema_name").getString(), 
          "TABLE", 
          vt.getQuery().fieldByName("table_name").getString()));
    } catch (Exception ex) {
      MessageBox.show("Problem", ex.getMessage(), ModalResult.OK);
    }
  }
}

5.A.1.7.4.3. Zabijanie sesji Oracle bez prawa DBA

Poniższy kod można umieścić w konfiguracji skyptów akcji by podpiąć go do listy sesji bazy danych Oracle.

Przykład pokazuje jak wywołać procedurę PL/SQL aby umożliwić użytkownikom bazy danych Oracle zabijać swoje sesje bez uprawnień DBA.

Action title: Zabicie sesji RAC
Action key: oracle-sessions-actions

import pl.mpak.orbada.gui.comps.table.ViewTable;
import pl.mpak.sky.gui.mr.ModalResult;
import pl.mpak.sky.gui.swing.MessageBox;
import pl.mpak.usedb.util.SQLUtil;

if (component instanceof ViewTable) {
  ViewTable vt = (ViewTable)component;
  if (vt.getSelectedRow() >= 0) {
    try {
      vt.getQuery().getRecord(vt.getSelectedRow());
      String sid = vt.getQuery().fieldByName("sid").getString();
      String serial = vt.getQuery().fieldByName("serial#").getString();
      String inst = vt.getQuery().fieldByName("inst_id").getString();
      database.createCommand("begin kskill.kill_session("+sid+","+serial +","+inst+"); end;", true);
    } catch (Exception ex) {
      MessageBox.show("Błąd", ex.getMessage(), ModalResult.OK);
    }
  }
}