postgresql中的执行语法错误

postgresql中的执行语法错误,sql,postgresql,function,triggers,Sql,Postgresql,Function,Triggers,我想使用execute执行以下查询,它与select完美配合,但是当我在触发器中调用它时,我得到了这个错误“error:query没有结果数据的目标”。我试过表演,但没用。选择插入表中的行中的函数 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; 所以我想到了执行,但是我得到了语

我想使用execute执行以下查询,它与select完美配合,但是当我在触发器中调用它时,我得到了这个错误“error:query没有结果数据的目标”。我试过表演,但没用。选择插入表中的行中的函数

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;
所以我想到了执行,但是我得到了语法错误。以下是我的尝试:

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';
有人能告诉我我做错了什么吗?或者有没有其他方法可以让查询在触发器函数中工作?提前谢谢

触发因素如下:

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; 
下面是插入函数:

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';

有时计算表达式或选择查询很有用,但 例如,在调用具有 副作用,但没有有用的结果值。要在PL/pgSQL中执行此操作,请使用 PERFORM语句

我的

内部功能更改
选择
执行

有时计算表达式或选择查询很有用,但 例如,在调用具有 副作用,但没有有用的结果值。要在PL/pgSQL中执行此操作,请使用 PERFORM语句

我的


在函数用户
perform
中的函数更改
select
perform

,而不是
select
@VaoTsun中,它与perform不起作用。我没有收到错误,但插入未完成。请回答您的问题,并向我们展示您的完整函数。@a_horse_,名称为ok,我已对其进行了编辑。。您的触发器将为该查询返回的每一行调用
插入新的\u等级。这真的是你想要实现的吗?但是无论如何,当您放弃该选择的结果时,您必须在触发函数中使用
perform
而不是
select
。在函数user
perform
而不是
select
@VaoTsun中,它不适用于perform。我没有收到错误,但插入未完成。请回答您的问题,并向我们展示您的完整函数。@a_horse_,名称为ok,我已对其进行了编辑。。您的触发器将为该查询返回的每一行调用
插入新的\u等级。这真的是你想要实现的吗?但无论如何,当您放弃该选择的结果时,您必须在触发器功能中使用
perform
,而不是
select