SELECT или PERFORM в функции PL/pgSQL

У меня есть эта функция в моей базе данных:

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;

Но как только я пытаюсь ее использовать, она говорит, что мне нужно использовать PERFORM, если я хочу отказаться от Результаты! Проблема в том, что я не хочу! Я хочу, чтобы они были в строке articulo, которую я объявил!

Я использую этот оператор:

SELECT "insertarNuevoArticulo"('Acetaminofen', 'caro', '1', '1', '8', '1', '10', '1', '150.7', '10');

И получаю ошибку 42601, синтаксическую ошибку! Как это может быть, если я использую IDE для его создания? Любая идея о проблеме?

11
задан Erwin Brandstetter 1 April 2018 в 01:06
поделиться