PL/pgSQL 语法错误
Posted
技术标签:
【中文标题】PL/pgSQL 语法错误【英文标题】:PL/pgSQL syntax error 【发布时间】:2013-02-19 17:00:16 【问题描述】:我有一个非常简单的 PL/pgSQL 脚本:
declare x varchar(100);
当我运行它时,我会收到一条消息:
[WARNING ] declare x varchar(100)
ERROR: syntax error at or near "varchar"
LINE 1: declare x varchar(100)
^
我真的不明白这有什么问题。
【问题讨论】:
显示整个创建函数脚本 这是整个脚本。 您必须将其包装在create function 命令中。 这不是完整的(并且语法正确)PL/pgSQL“脚本” 【参考方案1】:您可以在 PostgreSQL 的函数体内仅使用过程语句。
CREATE OR REPLACE FUNCTION foo()
RETURNS int AS
$$ -- here start procedural part
DECLARE x int;
BEGIN
x := 10;
RETURN x;
END;
$$ -- here finish procedural part
LANGUAGE plpgsql; -- language specification
或在临时函数中(匿名块)
DO $$
DECLARE x int;
BEGIN
x := 10;
RAISE NOTICE '>>>%<<<', x;
END;
$$;
不可能像 T-SQL 那样使用过程语句作为 SQL 语句。
【讨论】:
【参考方案2】:举个例子
DO $$
Declare
test varchar;
begin
test := 'teste';
if (char_length(test) > 0) then
RAISE NOTICE '>>>%<<<', test;
end if;
end;
$$;
【讨论】:
【参考方案3】:我已经通过以下代码解决了这个问题:
do $$
declare InvestigationTypeId int;
declare var_STDStatusMasterId int;
begin
InvestigationTypeId := null;
var_STDStatusMasterId := null;
end;
$$;
【讨论】:
以上是关于PL/pgSQL 语法错误的主要内容,如果未能解决你的问题,请参考以下文章