postgresql - 调用返回无效函数时在“执行”处或附近出现语法错误
问题描述
功能
create function public.perform1(myid integer)
returns void
language 'plpgsql'
volatile security definer
as $$
begin
delete from tbl where tblid=myid;
end;
$$;
PERFORM
在 pgAdmin 和 SQL Shell 中调用时出错:
perform public.perform1(123);
ERROR: syntax error at or near "perform"
LINE 1: perform public.perform1(123)
^
SQL state: 42601
Character: 1
SELECT public.perform1(123);
也不好:
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function perform1(integer) line 3 at SQL statement
SQL state: 42601
解决方案
perform
只在里面使用plpgsql
。你要:
select public.perform1(123);
更新:
函数内部是您需要perform
. 我提到它然后忘记显示它:
create function public.perform1(myid integer)
returns void
language 'plpgsql'
volatile security definer
as $$
begin
perform delete from tbl where tblid=myid;
end;
$$;
更新 2:
好吧,这将教我实际测试代码。经过测试的有效代码:
create function public.perform1(myid integer)
returns void
language 'plpgsql'
volatile security definer
as $$
begin
delete from tbl where tblid=myid;
end;
$$;
推荐阅读
- php - 结帐时由 Google 提供的 AMP 页面服务器
- javascript - Javascript:警报函数忽略“if”语句并跳转到最后一个“else”
- bash - 在 bash 中通过 ssh 在远程服务器上运行命令的更快方法
- reactjs - 图像不显示反应
- python - 您可以使用 python/SQL/R 和 PowerBI 自动化 ETL 到仪表板管道吗?
- python - 使用 lambda 函数返回文件列表时 Snakemake 上的 InputFunction 错误
- html - 包含固定修复的居中 div
- mysql - 如何在mysql中过滤从晚上10点到14点但不晚于分钟的日期?
- python - 是否可以在不显式使用 python 中的索引的情况下引用列表项?
- xquery - xdmp:spawn-function() 替代方案