sql - postgresql 中的 EXECUTE 语法错误

标签 sql postgresql function triggers

我想使用 execute 执行以下查询,它与 select 完美配合,但是当我在触发器中调用它时,我收到此错误“错误:查询没有结果数据的目的地”。我试过 perform 但它不起作用。 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';

最佳答案

41.5.2. Executing a Command With No Result

Sometimes it is useful to evaluate an expression or SELECT query but discard the result, for example when calling a function that has side-effects but no useful result value. To do this in PL/pgSQL, use the PERFORM statement

强调我的。

内部函数将 select 更改为 perform

关于sql - postgresql 中的 EXECUTE 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666856/

相关文章:

sql - 更改数据库列的顺序

mysql - 数据库中的多重连接搜索

php - 从表中排序数据,分配给变量然后从另一个文件调用

django - 无法从 dockerized 应用程序连接到 docker 中的 postgres 服务器

sql - 如何正确 SELECT INTO @TempTable 多次返回单个结果集?

postgresql - go-pg - 读取更新后返回的 ID

python - PostgreSQL 无法创建 plpythonu 扩展

javascript - 如何从 .php 脚本增加 javascript 变量

javascript - 在具有原型(prototype)属性的匿名对象上使用 new?

javascript - 为什么这个简单的Js函数在定义后加了()却没有返回值/对象?