Ich verwende eine gespeicherte Prozedur, um den Typ des Schülers zurückzugeben, der an meiner Hochschule angemeldet ist. Wenn Sie ihre ID weiterleiten, sollten Sie ihren Vor- und Nachnamen in einer neuen Spalte angeben, die erstellt werden soll (z. B. Pendler, Mitarbeiter, Bewohner). Ich erhalte immer einen Fehler:Erstellen benutzerdefinierter Spalten in postgres für gespeicherte Prozeduren
ERROR: syntax error at or near "if" LINE 8: if exists (select count(commuterid) > 0 from commuter wh...).
Irgendwelche Tipps oder Ideen?
create or replace function roleAtMarist(int, REFCURSOR) returns refcursor as
$$
declare
identifier int := $1;
resultset refcursor := $2;
begin
open resultset for
if exists (select count(commuterid) > 0 from commuter where commuterid = identifier) then
select fname, lname, "Commuter" as Role
from people
where peopleid = identifier;
end if;
if exists (select count(employeeid) > 0 from employee where emplpoyeeid = identifier) then
select fname, lname, "Employee" as Role
from people
where peopleid = identifier;
end if;
if exists (select count(residentid) > 0 from studentpark where residentid = identifier) then
select fname, lname, "Resident" as Role
from people
where peopleid = identifier;
end if;
return resultset;
end;
$$
language plpgsql;
select roleAtMarist(12, 'resultset') ;
fetch all from results ;
Ich habe diesen Code ausgeführt und einen Fehler erhalten: Spalte "Pendler" existiert nicht. – Zeke
Diese Spalte ist nicht in Personen, aber ich verstehe, wo Sie versucht haben, darauf zuzugreifen von ... role_at_marist. – Zeke
@ Zeke. Das machen Sie in Ihrem Code: 'wählen Sie fname, lname," Pendler "als Rolle von Personen. Ich nehme an, Sie wissen, dass Doppel-Bezeichner die Groß- und Kleinschreibung beachten? http://StackOverflow.com/a/20880247/939860 –