"Not found"条件被识别为类型/变量?


CREATE OR REPLACE FUNCTION increaseSomeOfferPricesFunction(IN theOffererID INTEGER, IN numOfferIncreases INTEGER) RETURNS INT AS $$
BEGIN    
DECLARE a INTEGER;    
DECLARE b INTEGER;    
DECLARE c DATE;    
DECLARE d INTEGER = 0;
DECLARE NotFound CONDITION FOR SQLSTATE '02000';

当我尝试创建这个存储函数时,我会得到错误CONTEXT:无效的类型名称";SQL状态"02000"的条件;

我很困惑为什么会发生这种情况,因为我几乎肯定语法是正确的。

这是SQL/PSM语言(MySQL或DB2使用它(-它不是PL/pgSQL。MySQL在存储过程中使用的语言与Postgres不同。

PL/pgSQL要求在BEGIN关键字之前声明变量。其次,PL/pgSQL不支持条件声明:

CREATE OR REPLACE FUNCTION increaseSomeOfferPricesFunction(IN theOffererID INTEGER, 
IN numOfferIncreases INTEGER) 
RETURNS INT AS $$
DECLARE
a INTEGER;    
b INTEGER;    
c DATE;    
d INTEGER = 0;
BEGIN
SELECT ...
IF NOT FOUND THEN ...
END IF;
END;
$$ LANGUAGE plpgsql;

最新更新