Wie referenziere ich benannte Parameter in Postgres-SQL-Funktionen?

7

Postgres noobie hier.

Ich versuche, eine SQL Server gespeicherte Proc in eine Postgres-Funktion zu konvertieren. Derzeit kann ich nicht herausfinden, wie man diese SQL-Zeile in Postgres umwandelt.

SQL Server:

%Vor%

Postgres:

%Vor%

Ich erhalte den Fehler "Spalte n existiert nicht." Wie referenziere ich Parameter in Select-Anweisungen in Postgres-Funktionen?

UPDATE:

Definition der Postgres-Funktion

%Vor%     
Nick Vaccaro 19.03.2012, 13:58
quelle

2 Antworten

13

Parameternamen sind nur Dekoration, wenn Ihre Funktion in Sprache SQL . Sie können die Parameter nach Namen in gespeicherten Prozeduren verwenden, die als language plpgsql definiert sind.

Folglich müssen Sie sich auf die Funktion args mit $ X beziehen, wobei X die Ordinalposition der Argumentliste der Funktion ist (beginnend mit 1).

%Vor%     
dbenhur 19.03.2012, 14:26
quelle
8

Sie können benannte Parameter nicht in einer Funktion verwenden, die mit language = SQL definiert ist.

Sie müssen den Platzhalter $ 1 verwenden.

%Vor%

Dieses Verhalten ist im Handbuch dokumentiert: Ссылка

  

Soweit es die SQL-Funktion selbst betrifft, sind diese Namen nur Dekoration; Sie müssen immer noch auf die Parameter $ 1, $ 2 usw. innerhalb des Funktionskörpers

verweisen

Bearbeiten

Seit der Version 9.2 ist es möglich, benannte Parameter mit (normaler) SQL-Funktion zu verwenden, Ссылка

    
a_horse_with_no_name 19.03.2012 14:12
quelle