这是我第一次学习游标。我有两个表:drink d
和cart c
。它们都包含一个公共主键,c.did = d.did
。 (其中did
=饮料编号)。我正在尝试使teatype
不能同时加入两行,以便更新teatype
的库存。例如,如果返回:
-----------
| teatype|
-----------
Oolong
Green Tea
Oolong
然后,我将遍历该记录,以便可以更新另一个表teatype
中该特定tea
的库存,该表包含列stock
,其中{{1} } =光标的teatype
。
我遇到的问题是不知道如何正确实现游标,以便游标可以更新库存。我遇到了说teatype
或syntax error ar or near end
的问题。我在网上浏览了所有内容,但找不到正确的资源。
我尝试将过程语句放在函数中,但这没有帮助。好像我走的路不正确,也不知道如何解决这个问题。我的代码如下,我正在尝试在PostgresSQL服务器中运行它。
if
我应该期望像CREATE OR REPLACE FUNCTION foo()
RETURNS VOID AS $$
DECLARE
tea_type RECORD;
TeaCursor CURSOR FOR
SELECT teatype FROM cart c
JOIN drink d ON c.did = d.did;
Begin
OPEN TeaCursor;
LOOP
FETCH from TeaCursor into tea_type;
exit when tea_type = null;
UPDATE tea t
SET stock = stock - 1
WHERE t.type = tea_type.teatype;
end if;
END LOOP;
close TeaCursor;
End;
$$LANGUAGE sql stable;
这样的东西,或者说它已经成功地降低了该特定UPDATE 1
的库存。相反,我总是收到这样的错误:
teatype
答案 0 :(得分:0)
您实际上将函数声明为LANGUAGE sql
时将其声明为LANGUAGE plpgsql
。