Postgresql 为什么此PL/PgSql无效?
N00bie PL/PgSql问题:Postgresql 为什么此PL/PgSql无效?,postgresql,plpgsql,Postgresql,Plpgsql,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: s
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"
我做错了什么?您需要从
开始/结束
块中删除声明
:
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
您需要从
begin/end
块中删除declare
:
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
啊。正确的。因此,您不能在
BEGIN…END
块中声明变量吗?@ShaulBehr您可以在declare
part.Correct中声明它。您可以在BEGIN.Ah前面的declare部分声明变量。正确的。因此,您不能在BEGIN…END
块中声明变量吗?@ShaulBehr您可以在declare
part.Correct中声明它。您可以在BEGIN之前的declare部分声明变量。