PL/pgSQL 匿名代码块

2023-11-23

在 PostgreSQL 9.0 中,我有这个 PLPGSQL 匿名代码块:

DO $$
    DECLARE
        bigobject integer;
    BEGIN
        SELECT lo_creat(-1) INTO bigobject;
        ALTER LARGE OBJECT bigobject OWNER TO postgres;
        INSERT INTO files (id, "mountPoint", data, comment) VALUES (15, '/images/image.png', bigobject, 'image data');
        SET search_path = pg_catalog;
        SELECT pg_catalog.lo_open(bigobject, 131072);
        SELECT pg_catalog.lowrite(0, '\\x000001000100101010000000000028010000160000002800000010000000200000000100040');
        SELECT pg_catalog.lo_close(0);
        REVOKE ALL ON LARGE OBJECT bigobject FROM PUBLIC;
        REVOKE ALL ON LARGE OBJECT bigobject FROM postgres;
        GRANT ALL ON LARGE OBJECT bigobject TO postgres;
        GRANT ALL ON LARGE OBJECT bigobject TO "com.ektyn.eshops.myuser";
    END
$$;

但它失败了:

ERROR:  syntax error at or near "bigobject"
LINE 6:   ALTER LARGE OBJECT bigobject OWNER TO postgres;
                             ^

********** Error **********

ERROR: syntax error at or near "bigobject"
SQL state: 42601
Character: 103

而且我在代码中找不到错误。


必须有一个常数 in ALTER LARGE OBJECT oid ...。尝试这个解决方法:

DO $$
    DECLARE
        bigobject integer;
    BEGIN
        SELECT lo_creat(-1) INTO bigobject;
        EXECUTE 'ALTER LARGE OBJECT ' || bigobject::text || ' OWNER TO postgres';
        ...

当然,这同样适用于 GRANT 和 REVOKE。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PL/pgSQL 匿名代码块 的相关文章

随机推荐

  • Delphi XE2 TurboPower 组件状态

    TurboPower 组件是最流行的商业组件库之一 并且在开源后仍然被许多 Delphi 开发人员使用 我不想单独询问 而是想问一个关于每个组件的 XE2 兼容性状态的问题 主要有 TurboPower Abbrvia AsyncPro 和
  • 通过对组内的列进行排序来重新排列数据框

    执行以下任务的好方法是什么 我有一个数据框 例如 v2 lt c 4 5 2 5 3 5 5 5 7 5 6 5 2 5 1 5 3 5 v1 lt c 2 2 3 2 1 2 4 2 2 2 3 2 2 2 1 2 5 2 lvl lt
  • 如何实现保存/加载功能?

    我正在尝试为 Windows 窗体应用程序实现加载 保存功能 我有以下组件 树视图 几个列表视图 几个文本框 几个对象 包含一个大字典列表 我想实现一种将所有这些保存到文件中的方法 并稍后恢复 加载它 最好的方法是什么 我认为 XML 序列
  • UIViewController 子类所需的初始值设定项

    我一直在尝试遵循有关创建容器视图控制器的教程 它是在 Objective C 中 我想将其转换为 Swift 我在这里发现了一些相同的问题 但我没有从中得到太多 这是代码 import UIKit class ContainerViewCo
  • PyQt 进度条直到 100% 才会更新或显示

    EDIT PyQt4 进度条上有许多类似的帖子没有更新 他们都关注线程问题以及程序实际更新窗口的位置 虽然很有帮助 但我的代码结构过于结构化 以至于回复不切实际 这里给出的公认答案很简单 切中要点并且有效 我在 Win 7 x64 机器上使
  • if else 概念在功能文件(Gherkin 语言)中可用吗?

    无论如何 我们可以在功能文件中使用 if else 概念吗 例如 Scenario User should be able to check login page Given I am on login page When I click
  • Chrome 中的 Azure 无限重定向循环

    我有一个 MVC5 Azure 网站 昨晚运行良好 现在 当尝试通过 chrome 登录时 它似乎陷入了无限重定向循环 它在 Edge 和 FireFox 上运行良好 它使用 Azure AD 进行身份验证 重定向从主站点到login mi
  • 在 WebAPI 控制器中序列化 EF Code First 5.0 数据时出错

    我最初问过这个问题 如何解决 指定的包含路径无效 已回答 我的 Include 现在正在工作 但是 当序列化器尝试工作时 它很神奇 我收到以下错误 You must write an attribute type object after
  • Android中使用MediaPlayer播放mp3文件列表

    我在 Android 中使用 MediaPlayer 重现多个 mp3 文件时遇到问题 我能够复制一个文件 但我没有找到任何有用的东西来逐个复制不同的文件 我现在用来重现一个文件的代码是 public MediaPlayer mediaPl
  • 使用 jquery 禁用输入 type="image" 的正确方法是什么?

    使用 jQuery 我尝试禁用这样的输入字段
  • 从两个字符串中获取编辑

    我将深入探讨我的问题 如果您不想阅读所有内容 可以跳至 TL DR 我正在尝试做什么 我需要存储一个 文件 文本文件 可以由用户编辑 如果我有原始文件 这可能是巨大的 Lorem ipsum dolor 坐 amet 用户要进行更改 Foo
  • 收集多组列

    我从一项在线调查中获得了数据 其中受访者回答了 1 3 次问题 调查软件 Qualtrics 将这些数据记录在多个列中 即调查中的 Q3 2 将包含列Q3 2 1 Q3 2 2 and Q3 2 3 df lt data frame id
  • 文本视图中的触摸坐标

    我在文本视图上使用触摸监听器 我可以通过运动事件获取触摸坐标 我可以获取我单击的字符索引或附近的字符坐标吗 Eg Hello Android 这是我的文字 现在我可以获得 x y 坐标 但是我可以获得字符索引吗 A 当我触摸它时 您必须重写
  • Rails 3.1 资产在生产中没有指纹

    刚开始适应rails 3 1 我开始编写coffeescript和sass 开发中一切正常 当我在生产中运行服务器时 我只得到 在页面的源代码中 没有生成哈希码 并且两个资产都有路由错误 Routing Error No route mat
  • C中“==”运算符的返回值

    我是否可以假设在 C 中 如果两个值相等 运算符将始终计算为 1 或者它可以计算为其他 真 值 struct ss int id struct os int sid int state int count struct ss s int s
  • 使用 ABAP 7.40+ 语法进行最有效的 itab 过滤

    在 7 40 版本中 我们有很多方法来过滤内部表数据 例如 可以使用这样的 ABAP 结构 FILTER操作员 DATA lt extract FILTER lt bseg USING KEY matnr bwtar WHERE matnr
  • 如何在node.js中保存.env文件中的更改

    I use dotenv用于读取环境变量 像这样 let dotenv require dotenv config path env console log process env DB HOST 现在我想保存更改 env文件 我找不到任何
  • 什么是非线性模式

    我正在阅读有关servant api DSL 参见 pdfhere 引用自第 5 2 节 类型安全链接 强调是我添加的 type family ElSymbol e s Symbol a Bool where ElSymbol s gt e
  • 如何使用自定义的类文件对象作为子进程 stdout/stderr?

    考虑这段代码 其中subprocess Popen被催生 我想写入子进程 stdout and stderr转到我的自定义文件对象 write 方法 但事实并非如此 import subprocess class Printer def i
  • PL/pgSQL 匿名代码块

    在 PostgreSQL 9 0 中 我有这个 PLPGSQL 匿名代码块 DO DECLARE bigobject integer BEGIN SELECT lo creat 1 INTO bigobject ALTER LARGE OB