postgresql - 为什么这个 PL/PgSql 无效?
问题描述
N00bie PL/PgSql 问题:
create or replace function foo() returns int as $$
declare fff int;
begin
declare fff int;
select count(*) into fff from mytable;
return fff;
end
$$ language plpgsql
输出:
ERROR: syntax error at or near "*"
LINE 5: select count(*) into fff from mytable;
^
CONTEXT: invalid type name "count(*) into fff from mytable"
我究竟做错了什么?
解决方案
您需要declare
从begin/end
块中删除:
create or replace function foo() returns int as $$
declare fff int;
begin
-- declare fff int;
select count(*) into fff from mytable;
return fff;
end
$$ language plpgsql
啊。正确的。那么你不能在 BEGIN...END 块中声明一个变量吗?
declare
您在部分声明变量。如果需要,可以嵌套块:
create or replace function foo() returns int as $$
declare fff int;
begin
declare xxx INT;
begin
select count(*) into xxx from mytable;
return xxx;
end;
end
$$ language plpgsql
推荐阅读
- python - Numpy - 如何从 4 个输入图像构建新图像,选择最亮的像素(max(R+G+B))
- ruby-on-rails - 我无法找到托管我的 Rails 应用程序的方法
- flutter - 在颤动中自动滚动到交互式查看器中的偏移量
- c++ - 程序占用的页数
- python - scipy.integrate 的替代品
- java - 是否可以将 Ghost CMS 与 Spring Boot(Java)一起使用?如果没有,有一些好的选择吗?
- ssas - 数字或结果以及与成员计算交互奇怪
- ios - 如何快速倒计时?
- reactjs - 使用材料 ui 键盘日期选择器动态设置日期
- python - 如何使用 discord.py 在 Discord 中获取(GitHub)连接?