postgresql中的EXECUTE语法错误

时间:2017-04-27 19:55:30

标签: sql postgresql function triggers

我想使用execute执行以下查询,它与select完美配合但是当我在触发器中调用它时我得到此错误"错误:查询没有结果数据的目的地"。我尝试过表演,但它没有奏效。选择插入表中的行中的函数。

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,但是我遇到了语法错误。这是我的尝试:

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

1 个答案:

答案 0 :(得分:0)

41.5.2. Executing a Command With No Result

  

有时评估表达式或SELECT查询很有用   丢弃结果,例如调用具有的函数时   副作用但没有有用的结果值。要在PL / pgSQL中执行此操作,请使用   PERFORM声明

强调我的。

内部功能更改selectperform