2016-07-11 39 views
2

Gibt es einen Unterschied zwischen:"LANGUAGE plpgsql" vor oder nach dem Funktionskörper deklarieren?

CREATE FUNCTION func() RETURNS integer 
    LANGUAGE plpgsql AS $$ 
    declare 
    begin 
     -- do something 
    end 
$$; 

und

CREATE FUNCTION func() RETURNS INTEGER AS $$ 
    declare 
    begin 
     -- do something 
    end 
$$ LANGUAGE plpgsql; 

Hat LANGUAGE plpgsql im Grunde hat nur die $$ Nutzung außerhalb des Rahmens sein?

Antwort

4

Kein Unterschied überhaupt.
Der Funktionskörper ist ein String-Literal. Die $$ sind nur Dollar-Zitate und könnte einzelne Anführungszeichen gesetzt werden, auch (aber bessere Nutzung Dollar Anführungszeichen!):

CREATE FUNCTION ist eine deklarative SQL-DDL-Befehl, und Die Reihenfolge der Schlüsselwörter ist ziemlich frei, wie per definition in the manual. (Schlüsselwörter innerhalb der geschweiften Klammern in der Befehlsdefinition können frei angeordnet werden, aber nicht der Rest).