暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为openGauss 执行动态查询语句

介绍执行动态查询语句。openGauss提供两种方式:使用EXECUTE IMMEDIATE、OPEN FOR实现动态查询。前者通过动态执行SELECT语句,后者结合了游标的使用。当需要将查询的结果保存在一个数据集用于提取时,可使用OPEN FOR实现动态查询。

EXECUTE IMMEDIATE

语法图请参见图1

图 1 EXECUTE IMMEDIATE dynamic_select_clause::=

using_clause子句的语法图参见图2

图 2 using_clause::=

对以上语法格式的解释如下:

  • define_variable:用于指定存放单行查询结果的变量。
  • USING IN bind_argument:用于指定存放传递给动态SQL值的变量,即在dynamic_select_string中存在占位符时使用。
  • USING OUT bind_argument:用于指定存放动态SQL返回值的变量。

    须知:
    - 查询语句中,into和out不能同时存在;
    - 占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的bind_argument一一对应;
    - bind_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象,即不支持使用bind_argument为动态SQL语句传递模式对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接dynamic_select_clause;
    - 动态PL/SQL块允许出现重复的占位符,即相同占位符只能与USING子句的一个bind_argument按位置对应。

```

```

OPEN FOR

动态查询语句还可以使用OPEN FOR打开动态游标来执行。

语法参见图3

图 3 open_for::=

参数说明:

  • cursor_name:要打开的游标名。
  • dynamic_string:动态查询语句。
  • USING value:在dynamic_string中存在占位符时使用。

游标的使用请参考游标

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

文集目录
暂无数据