Server-Metadaten erstellen und bearbeiten

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Befehle ausführen, die keine Datensätze zurückgeben


Die meisten Befehle, die keine Daten zurückgeben, können in zwei Kategorien eingeteilt werden: solche, die Sie zur Bearbeitung von Daten verwenden (wie beispielsweise die Befehle INSERT, DELETE und UPDATE), und solche, die Sie verwenden, um Entitäten auf dem Server zu erstellen oder zu bearbeiten, wie beispielsweise Tabellen, Indizes oder Stored Procedures.

Falls Sie zur Bearbeitung keine expliziten SQL-Befehle verwenden wollen, können Sie Ihre unidirektionale Datenmenge mit einer Client-Datenmenge verknüpfen und es ihr überlassen, alle für die Bearbeitung erforderlichen SQL-Befehle zu erzeugen (siehe Verwenden einer Client-Datenmenge, um Datensätze zwischenzuspeichern). Dies ist der empfohlene Ansatz, weil datensensitive Steuerelemente darauf ausgelegt sind, Bearbeitungen durch eine Datenmenge wie beispielsweise TClientDataSet vorzunehmen.

Die einzige Möglichkeit, wie Ihre Anwendung Metadaten auf dem Server erstellen oder bearbeiten kann, besteht jedoch darin, einen Befehl zu senden. Nicht alle Datenbanktreiber unterstützen dieselbe SQL-Syntax. Im Rahmen dieses Themas ist es nicht möglich, die von allen Datenbanktypen unterstützte SQL-Syntax und die Unterschiede zwischen den Datenbanktypen zu beschreiben. Eine umfassende und aktuelle Beschreibung der SQL-Implementierung für ein bestimmtes Datenbanksystem finden Sie in der zum jeweiligen System gehörigen Dokumentation.

Im Allgemeinen verwenden Sie die Anweisung CREATE TABLE, um in einer Datenbank Tabellen anzulegen, und CREATE INDEX, um neue Indizes für diese Tabellen einzurichten. Falls unterstützt, verwenden Sie weitere CREATE-Anweisungen, um verschiedene Metadaten-Objekte hinzuzufügen, wie beispielsweise CREATE DOMAIN, CREATE VIEW, CREATE SCHEMA und CREATE PROCEDURE.

Für jede der CREATE-Anweisungen gibt es eine entsprechende DROP-Anweisung, die das Metadaten-Objekt löscht. Diese Anweisungen beinhalten unter anderem DROP TABLE, DROP VIEW, DROP DOMAIN, DROP SCHEMA und DROP PROCEDURE.

Um die Struktur einer Tabelle zu ändern, verwenden Sie die Anweisung ALTER TABLE. ALTER TABLE verfügt über ADD- und DROP-Klauseln, um neue Elemente in einer Tabelle zu erstellen bzw. sie zu löschen. Verwenden Sie beispielsweise die Klausel ADD COLUMN, um der Tabelle eine neue Spalte hinzuzufügen, und DROP CONSTRAINT, um eine existierende Beschränkung aus der Tabelle zu entfernen.

Die folgende Anweisung beispielsweise erzeugt die Stored Procedure GET_EMP_PROJ in einer InterBase-Datenbank:

CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT)
RETURNS (PROJ_ID CHAR(5))
AS
BEGIN
  FOR SELECT PROJ_ID
  FROM EMPLOYEE_PROJECT
  WHERE EMP_NO = :EMP_NO
  INTO :PROJ_ID
  DO
    SUSPEND;
END

Der folgende Quelltext verwendet ein TSQLDataSet, um diese Stored Procedure zu erstellen. Beachten Sie die Verwendung der Eigenschaft ParamCheck, um zu verhindern, dass die Datenmenge die Parameter in der Definition der Stored Procedure (:EMP_NO und :PROJ_ID) mit einem Parameter in der Abfrage, die die Stored Procedure erzeugt, verwechselt.

with SQLDataSet1 do
begin
  ParamCheck := False;
  CommandType := ctQuery;
  CommandText := 'CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT) ' +
      'RETURNS (PROJ_ID CHAR(5)) AS ' +
      'BEGIN ' +
        'FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT ' +
        'WHERE EMP_NO = :EMP_NO ' +
        'INTO :PROJ_ID ' +
          'DO SUSPEND; ' +
       END';
  ExecSQL;
end;
SQLDataSet1->ParamCheck = false;
SQLDataSet1->CommandType = ctQuery;
SQLDataSet1->CommandText = "CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT) RETURNS (PROJ_ID CHAR(5)) AS BEGIN FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT WHERE EMP_NO = :EMP_NO INTO :PROJ_ID DO SUSPEND; END";
SQLDataSet1->ExecSQL();

Siehe auch