在postgresql中创建函数不进行插入
cursreg返回“continguts”上所有在classcont上没有寄存器的行。(这没关系) 但是我需要在“classcont”中为每个结果插入函数接收的int(classificado int)在postgresql中创建函数不进行插入,sql,postgresql,Sql,Postgresql,cursreg返回“continguts”上所有在classcont上没有寄存器的行。(这没关系) 但是我需要在“classcont”中为每个结果插入函数接收的int(classificado int) CREATE OR REPLACE FUNCTION fclassifica(clasificado int) RETURNS void AS $$ DECLARE registre RECORD; cursreg CURSOR FOR SELECT c.idcontingut
CREATE OR REPLACE FUNCTION fclassifica(clasificado int) RETURNS void AS $$
DECLARE
registre RECORD;
cursreg CURSOR FOR SELECT c.idcontingut FROM continguts as c
WHERE NOT EXISTS (SELECT * FROM classcont as ca
WHERE c.idcontingut = ca.contingut);
BEGIN
OPEN cursreg;
LOOP
FETCH FROM cursreg INTO registre;
INSERT INTO classcont (class,contingut)
VALUES (clasificado, registre.idcontingut);
RAISE NOTICE 'La classificació de ID ha estat modificada' ;
END LOOP;
CLOSE cursreg;
RETURN ;
END;
$$ LANGUAGE plpgsql;
不需要游标,甚至不需要PL/pgSQL
CREATE OR REPLACE FUNCTION fclassifica(p_clasificado int)
RETURNS void
AS
$$
INSERT INTO classcont (class, contingut)
select p_clasificado, c.idcontingut
FROM continguts as c
WHERE NOT EXISTS (SELECT *
FROM classcont as ca
WHERE c.idcontingut = ca.contingut);
$$
language sql;