【问题标题】:PostgreSQL cursor with arguments带参数的 PostgreSQL 游标
【发布时间】:2013-07-22 10:33:36
【问题描述】:

正如文档中描述的 here,我需要声明一个在 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 不接受这种形式的游标声明。 有没有办法解决这个问题?有什么解决方法吗?

谢谢

【问题讨论】:

    标签: postgresql cursor arguments postgresql-9.1


    【解决方案1】:

    摘自: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;
    

    发件人:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我将您的答案标记为已接受,但我将其更改为 Igor 的,因为您的只是说明了我的错误,而他实际上提供了一种解决方法,这正是我正在寻找的。​​span>
      【解决方案3】:

      尝试类似:

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

      argName 将在您OPEN 此光标时被带入查询。

      【讨论】:

      • 谢谢!这看起来很有希望。
      • 问题:我应该在将 argName 更改为新值后关闭和打开 cur,对吗?
      • @gcontreras 是的。当光标打开时,它不会改变它的查询和参数。
      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2022-01-18
      • 2023-01-20
      • 1970-01-01
      • 2020-06-10
      相关资源
      最近更新 更多