【发布时间】:2014-11-05 22:54:22
【问题描述】:
我正在尝试完成这项工作,并且在没有两次 artikli_racun 更新的情况下对其进行了测试,并且它有效。因此,如果我只有 cena(price),它将起作用,并且需要 2 美元,但很明显,这里说“artikel”行不存在,我不知道该怎么做。它需要 1 美元,我需要一个解决方案来解释为什么它需要这个变量......
NAPAKA: stolpec "artikel" ne obstaja
KONTEKST: SQL statement "UPDATE artikli_racun SET id_artikla=(SELECT id FROM artikli WHERE ime=$1 ) WHERE artikel= $1 "
PL/pgSQL function "racun123" line 6 at SQL statement
CREATE OR REPLACE FUNCTION racun123(integer,varchar) RETURNS
BOOLEAN AS
$$
BEGIN
IF (SELECT zaloga FROM artikli WHERE ime=$2)>0 THEN
INSERT INTO racun1(id,artikel) VALUES($1,$2);
UPDATE racun1 SET cena=(SELECT prodajna_cena FROM artikli WHERE
ime=$2) WHERE artikel=$2;
UPDATE artikli_racun SET id_artikla=(SELECT id FROM artikli WHERE
ime=$2) WHERE artikel=$2;
UPDATE artikli_racun SET id_racuna=(SELECT id FROM racun1 WHERE
ime=$2) WHERE artikel=$2;
UPDATE artikli set zaloga=zaloga-1 WHERE ime=$2;
RETURN true;
ELSE RETURN false;
END IF;
END;
$$LANGUAGE plpgsql;
【问题讨论】:
-
要获取英文错误消息,请在会话中运行
SET lc_messages = 'C'。要正确修复您的代码,我们需要查看表定义,最重要的是(但不限于)psql中的\d artikli_racun。
标签: sql function postgresql error-handling plpgsql