Syntax Error

Hallo zusammen,

die folgende Skript

DECLARE
i integer := 0;
BEGIN
SELECT INTO i 1 from pg_tables where tablename = ‘items’
IF i = 0 THEN
RAISE EXCEPTION ‘‘The table exists already’’;
END IF;
END;

gibt mir in PostgresSQL den Fehler “ERROR: syntax error at or near “integer” bei Zeichen 15”. Irgendwelche Ideen warum?

Danke und Gruß,
Andrej

[quote=“rfq”]Hallo zusammen,

die folgende Skript

DECLARE
i integer := 0]

Die Doku hätte dir sofort benatwortet, das im DECLARE-Bereich keine Zuweisungen stehen dürfen, sondern nur Aliases.
http://www.postgresql.org/docs/8.1/interactive/plpgsql-declarations.html#PLPGSQL-DECLARATION-ALIASES

Und wo ist eigentlich dein Funktionskopf?

Hallo Domski,

danke für deine Antwort. Ich komme eigentlich aus Oracle Welt und möchte eine namenlose Prozedur erstellen. Die Doku habe ich gelesen und habe meine Skript auf Basis des Beispiels aus Kapitel 36.6.2 aufgebaut. Wenn du auch Kapitel 36.3 anschaust, dann gibt da so ein Beispiel:

CREATE FUNCTION somefunc() RETURNS integer AS $$
DECLARE
quantity integer := 30;
BEGIN

Also so weit ich das verstehe, sind die Zuweisungen im DECLARE-Bereich sehr wohl zulässig.

Korrigiere mich bitte, wenn ich mich irre.

Danke und Gruß,
Andrej

Hallo Andrej,

Das :!: ; :!: fehlt am Ende!



Welchen Wert in “i” willst Du eigentlich erhalten?

SELECT INTO i :?: 1 :?: from pg_tables where tablename = ‘items’



mfg

fristo

Hallo Andrej,

Hallo zusammen,

ich habe mein Problem gelöst. Das hilft mir aber nicht, weil ich eine namenlose Prozedur (wie in Oracle), die keine Werte zurückgibt, haben möchte und das geht scheinbar in Postgre nicht. Schade.

Gruß,
Andrej

hi,

natürlich geht das :wink:

CREATE OR REPLACE FUNCTION bla()
RETURNS void AS
$BODY$BEGIN

END;$BODY$
LANGUAGE ‘plpgsql’;

cu tb.