我試圖做這個工作,我沒有兩個artikli_racun更新測試它,它的工作。所以,如果我只有cena(價格),它會起作用,它將花費2美元,但很明顯,這裏說「artikel」行不存在,我不知道該怎麼做。這需要$ 1,我需要一個解決方案,爲什麼需要這個變量...PL/pgSQL函數似乎是選擇了錯誤的變量?
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 c_messages ='C''。爲了正確地修復你的代碼,我們需要查看錶定義,重要的是(但不限於)'psql'中的'\ d artikli_racun'。 – 2014-11-07 02:30:52
[那麼你有答案嗎?](http://meta.stackexchange.com/a/5235/169168) – 2015-07-24 03:23:55