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;