libros - postgresql introduccion
EJECUTAR error de sintaxis en postgresql (1)
41.5.2. Ejecutando un comando sin resultado
Algunas veces es útil evaluar una consulta de expresión o SELECCIONAR, pero descartar el resultado, por ejemplo cuando se llama a una función que tiene efectos secundarios pero ningún valor de resultado útil. Para hacer esto en PL / pgSQL, use la instrucción PERFORM
énfasis mío
dentro de la función cambiar select
para perform
quiero ejecutar la siguiente consulta usando execute, funciona perfecto con select pero cuando lo llamo trigger me sale este error "ERROR: la consulta no tiene destino para los datos de resultados". He intentado realizar pero no funciona. La función en seleccionar insertar filas en una tabla.
select insert_new_grade(''title0'', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5;
Así que he pensado en EXECUTE pero obtengo errores de sintaxis. Aquí está mi intento:
execute ''insert_new_grade(''title0'', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5'';
¿Puede alguien decirme qué estoy haciendo mal? ¿O hay alguna otra idea para que la consulta funcione en la función de activación? Gracias por adelantado..
Aquí está el disparador:
CREATE OR REPLACE FUNCTION insert_d()
RETURNS TRIGGER AS $$
BEGIN
select insert_new_grade(''title0'', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5;
return new;
END;
$$ LANGUAGE plpgsql;
y aquí está la función de inserción:
CREATE OR REPLACE FUNCTION insert_new_diploma(title0 character(100), prof0 character(11), prof1 character(11))
RETURNS VOID AS $$
BEGIN
INSERT INTO "d_table"(thes0, title, grade, prof, secProf)
VALUES (null, title0, null, prof0, prof1);
END
$$
LANGUAGE ''plpgsql'';