quiero ejecutar la siguiente consulta usando ejecutar, funciona perfectamente con seleccionar pero cuando lo llamo en disparador aparece este error "ERROR: la consulta no tiene destino para los datos de resultado". 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 pensé en EXECUTE pero tengo 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';
¿Alguien puede decirme qué estoy haciendo mal? ¿O hay alguna otra idea para hacer 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';
41.5.2. Ejecutar un comando sin resultado
A veces es útil evaluar una expresión o una consulta SELECT 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.
cambio de función interior select
para perform