/ / Der Versuch, eine Insert-Funktion zu erstellen - function, postgresql, pgadmin

Versuche, eine Insert-Funktion zu erstellen, postgresql, pgadmin

Ich versuche, eine Funktion in Postgres 8.4 mit pgAdmin zu erstellen, und ich habe den folgenden Code

CREATE OR REPLACE FUNCTION spcwriteperson(IN fname varchar(20))
RETURNS VOID AS
$BODY$
INSERT INTO person ("firstName") VALUES(fname);
$BODY$
LANGUAGE sql VOLATILE
COST 100;

Wenn ich versuche, dies auszuführen, beschwert sich der fnameBei VALUES (fname) ist keine Spalte. Ich komme aus dem Schreiben von Sprocs und Funktionen in MySQL und Sql Server.

Antworten:

8 für die Antwort № 1

Wenn Sie keine nummerierten Parameter verwenden möchten, können Sie diese verwenden PL / PGSQL:

CREATE OR REPLACE FUNCTION spcwriteperson(fname varchar(20)) RETURNS VOID AS
$$
BEGIN
INSERT INTO person (firstName) VALUES (fname);
END
$$
LANGUAGE "plpgsql";

PL / PGSQL gibt Ihnen auch eine ähnliche SpracheSQL Server T-SQL. PL / PGSQL verfügt über Kontrollstrukturen, Variablen und all das, was Spaß macht. Die Implementierung der SQL-Sprache von PostgreSQL ist viel strenger hinsichtlich der verfügbaren Funktionalität - es ist eine großartige Implementierung von SQL, aber es ist "eine Abfragesprache, keine prozedurale Programmiersprache.


6 für die Antwort № 2

Die Parameter der SQL-Funktionen sind nummeriert. $1, $2, und so weiter. Sehen die Dokumentation für Details. Du könntest benutzen pgSQL wenn Sie benannte Parameter und erweiterte Funktionen wünschen.