Wofür wird '$$' in PL / pgSQL verwendet?
Völlig neue PL/pgSQL , was ist der Sinn des doppelten Dollarzeichen in diese Funktion:
CREATE OR REPLACE FUNCTION check_phone_number(text)
RETURNS boolean AS $$
BEGIN
IF NOT $1 ~ e'^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$' THEN
RAISE EXCEPTION 'Wrong formated string "%". Expected format is +999 999';
END IF;
RETURN true;
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
Ich vermute, dass in RETURNS boolean AS $$
, $$
ist ein Platzhalter.
Die Letzte Zeile ist ein bisschen ein Rätsel: $$ LANGUAGE plpgsql STRICT IMMUTABLE;
Durch die Art und Weise, was bedeutet die Letzte Zeile bedeuten?
Kommentar zu dem Problem
Bitte beachten Kennzeichnung Erwin Reaktion als Antwort auf diese Frage, seine Beschreibung wird erläutert, was eigentlich in der
$$
, und Sie können lernen, etwas neues durch das Lesen z.B. auch $foo$
InformationsquelleAutor der Frage vector | 2012-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem dollar-Zeichen verwendet werden, die fürdollar-quoting und sind in keiner Weise spezifisch für Funktionsdefinitionen. Es kann verwendet werden zum ersetzen von single quotes die praktisch überall in SQL-Skripts.
Den Körper einer Funktion geschieht, um ein string-Literale, die in einfache Anführungszeichen eingeschlossen werden. Dollar-quoting ist eine PostgreSQL-spezifische Ersatz für einfache Anführungszeichen, um zu vermeiden, zitieren Probleme innerhalb der Funktion Körper. Könnten Sie schreiben, Ihre definition einer Funktion mit single-quotes genauso gut. Aber dann würden Sie haben, um zu entkommen, alle single-quotes im Körper:
Das ist nicht so eine gute Idee. Verwenden dollar-quoting statt, genauer gesagt auch ein token zwischen den
$$
machen es einzigartig - Sie möchten möglicherweise verwenden Sie $-Anführungszeichen innerhalb der Funktion Körper, zu. Ich tun viel, eigentlich.Details:
Als zu Ihrer zweiten Frage:
Lesen Sie die am meisten ausgezeichnete Handbuch auf
CREATE FUNCTION
zu verstehen, die Letzte Zeile von deinem Beispiel.InformationsquelleAutor der Antwort Erwin Brandstetter
Den $$ ist ein Trennzeichen, die Sie verwenden, um zu zeigen, wo die definition der Funktion beginnt und endet. Betrachten Sie die folgende,
Die create function-syntax ist ähnlich, aber da Sie verwenden alle Arten von SQL, die in Ihrer Funktion (vor allem das Ende der Anweisung; Charakter), der parser würde die Reise, wenn Sie nicht zu begrenzen. So Lesen Sie Ihre Aussage wie:
Die Sachen nach der eigentlichen definition sind Optionen, geben Sie der Datenbank weitere Informationen über Ihre Funktion, so kann es zu optimieren Ihrer Nutzung.
In der Tat, wenn Sie schauen Sie unter "4.1.2.2. Dollar-Quoted String-Konstanten" in der Anleitung, Sie werden sehen, dass Sie können sogar Zeichen zwischen dem dollar-Symbole und es werden alle zählen als ein Trennzeichen.
InformationsquelleAutor der Antwort Captain Coder