SELECT lub PERFORM w funkcji PL / pgSQL
Mam tę funkcję w mojej bazie danych:
<code>CREATE OR REPLACE FUNCTION "insertarNuevoArticulo"(nombrearticulo character varying, descripcion text, idtipo integer, idfamilia bigint, artstock integer, minstock integer, maxstock integer, idmarca bigint, precio real, marcastock integer) RETURNS boolean AS $BODY$ DECLARE articulo "Articulo"%ROWTYPE; BEGIN SELECT * INTO articulo FROM "Articulo" WHERE "Nombre" = $1 AND "idTipo"=$3 AND "idFamilia"=$4; IF NOT FOUND THEN INSERT INTO "Articulo" ("Nombre", "Descripcion", "idTipo", "idFamilia", "Stock", "MinStock", "MaxStock") Values ($1, $2, $3, $4, $5, $6, $7); SELECT last_value INTO articulo."idArticulo" FROM "public"."Articulo_idArticulo_seq"; END IF; SELECT * FROM "ArticuloMarca" AS am WHERE am."idArticulo" = articulo."idArticulo" and am."idMarca" = $8; IF NOT FOUND THEN Insert into "ArticuloMarca"("idArticulo", "idMarca", "PrecioReferencial", "Stock") Values (articulo."idArticulo", $8, $9, $10); RETURN TRUE; END IF; RETURN FALSE; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION "insertarNuevoArticulo"(character varying, text, integer, bigint, integer, integer, integer, bigint, real, integer) OWNER TO postgres; </code>
Ale jak tylko spróbuję go użyć, mówi, że muszę użyćPERFORM
jeśli chcę odrzucić wyniki! Problem polega na tym, że nie chcę! Chcę je warticulo
wiersz oświadczyłem!
Używam tego stwierdzenia:
<code>SELECT "insertarNuevoArticulo"('Acetaminofen', 'caro', '1' , '1', '8', '1', '10', '1', '150.7', '10'); </code>
A błąd jaki otrzymuję to 42601, błąd składniowy! Jak to możliwe, jeśli używam IDE do jego utworzenia? Masz jakiś pomysł na ten problem?