3

正如文档在此处描述的那样,我需要声明一个在 OPEN 时接受参数的游标。

我的查询类似于:

DECLARE cur CURSOR (argName 字符不同) FOR SELECT * FROM "TableName" WHERE "SomeColumn" = argName;

当我这样做时,我得到一个可爱的错误:

ERROR:  syntax error at or near "("
LINE 1: DECLARE cur CURSOR (argName character varying) FOR SELECT * FROM...
                           ^

似乎 PostgreSQL 不接受这种形式的游标声明。有没有办法解决这个问题?任何解决方法?

谢谢

4

3 回答 3

3

该语法仅在 plpgsql 函数中有效。

http://www.postgresql.org/docs/current/static/plpgsql-cursors.html

于 2013-07-23T11:46:39.140 回答
2

尝试类似:

DECLARE 
  argName varchar;
  cur CURSOR FOR SELECT * FROM "TableName" WHERE "SomeColumn" = argName;

当您使用此光标时,argName将被带入查询。OPEN

于 2013-07-23T11:46:34.920 回答
0

摘自:https ://www.postgresql.org/docs/current/static/plpgsql-cursors.html

DECLARE
    key integer;
    curs4 CURSOR FOR SELECT * FROM tenk1 WHERE unique1 = key;
BEGIN
    key := 42;
    OPEN curs4;

从:

于 2018-02-23T20:27:47.317 回答