CREATE METHOD-Anweisung (SQL)

Methoden werden in SQL zuerst deklariert, bevor sie mittels der CREATE METHOD-Anweisung implementiert werden. Die Deklaration erfolgt innerhalb des CREATE-TYPE-Befehls. Dort wird auch schon die Basiseigenschaft, ob es sich um eine statische, eine Instanz- oder eine Konstruktor-Methode handelt festgelegt.

Dies gilt nur für die Methoden, die mit der prozeduralen Erweiterung von SQL programmiert werden. Java und C Programme werden in die Datenbank geladen und bekannt gemacht, beovor sie für eine Deklaration im CREATE TYPE-Befehl verwendet werden können.

SQL-Syntax der CREATE METHOD-Anweisung:

    <CREATE METHOD Anweisung> ::=
CREATE [ INSTANCE | STATIC | CONSTRUKTOR ] METHOD Methodenname (Parameterliste)
RETURNS Rückgabetypwertname FOR Typname <Methodenrumpf>

Beispiele:

  -- Euro als DISTINCT-Typ definiert     
  CREATE TYPE euroTyp AS DECIMAL(20,2) FINAL; 

  -- instanziierbarer Typ für Atrikel-Daten, der kein Wurzeltyp einer Hierarchie sein kann
  -- mit einer abgeleiteten OID 
  CREATE TYPE artikel_typ AS (artikel_nr        NUMERIC(20), 
                              bezeichnung       VARCHAR(100),  
                              preis_netto       euroTyp) 
                              REF FROM (artikel_nr)
                              INSTANTIABLE  FINAL
                              STATIC   METHOD preis_brutto_d(netto IN euro_Typ) RETURNS euroTyp,
                              INSTANCE METHOD preis_brutto_f                    RETURNS SELF AS RESULT;

  -- Bruttopreisberechnung für Deutschland mit statischer Methode (nicht so gut geeignet)
  CREATE  STATIC METHOD preis_brutto_d (netto IN euroTyp)
  RETURNS euroTyp
  FOR     artikel_typ
  RETURN  euroTyp( CAST(netto AS DECIMAL)*1.19 );

  -- Bruttopreisberechnung für Frankreich mit einer Instanz-Methode
  CREATE  INTANCE METHOD preis_brutto_f ()
  RETURNS euroTyp
  FOR     artikel_typ
  RETURN  euroTyp( CAST(SELFpreis.netto AS DECIMAL)*1.196 );


Quellen:

  • ANSI/ISO/IEC 9075-1:2003. Part 1 "SQL/Framework", ISO International Organization for Standardization / ANSI American National Standards Institute, September 2003
  • ANSI/ISO/IEC 9075-2:2003. Part 2 "SQL/Foundation", ISO International Organization for Standardization / ANSI American National Standards Institute, Dezember 2003
  • Türker, Can/Saake, Gunter: "Objektrelationale Datenbanken", dpunkt-verlag, Heidelberg, 2006, ISBN 3-89864-190-2

Kategorie: Objektrelationale DB, M