有没有一种方法可以使用PostgresSQL中的游标来获取行?

时间:2019-03-24 19:25:40

标签: sql postgresql sql-function database-cursor

这是我第一次学习游标。我有两个表:drink dcart c。它们都包含一个公共主键,c.did = d.did。 (其中did =饮料编号)。我正在尝试使teatype不能同时加入两行,以便更新teatype的库存。例如,如果返回:

-----------
| teatype|
-----------
Oolong
Green Tea
Oolong

然后,我将遍历该记录,以便可以更新另一个表teatype中该特定tea的库存,该表包含列stock,其中{{1} } =光标的teatype

我遇到的问题是不知道如何正确实现游标,以便游标可以更新库存。我遇到了说teatypesyntax 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

1 个答案:

答案 0 :(得分:0)

您实际上将函数声明为LANGUAGE sql时将其声明为LANGUAGE plpgsql