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 № 1Wenn 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.