ITPub博客

首页 > 数据库 > 国内数据库 > 羲和(Halo)数据库——DBMS_SQL浅尝

羲和(Halo)数据库——DBMS_SQL浅尝

国内数据库 作者:杭州易景数通科技 时间:2024-07-11 14:34:19 0 删除 编辑
 本文将向大家展示如何在羲和(Halo)数据库中使用DBMS_SQL,本文测试案例除部分表结构和部分测试数据之外,其余均来自ORACLE官方测试文档,所有测试案例放置文章末尾以供学习使用。
一、DBMS_SQL

DBMS_SQL是ORACLE数据库提供的一个系统包,用于执行动态SQL,支持使用DDL和DML等。 DBMS_SQL整体运行流程图如下:

图片

     下面简单介绍一下本文中所使用到的DBMS_SQL部分接口,如果查看更为详细的介绍,建议参考ORACLE官方文档。 

  • OPEN_CURSOR :要处理SQL语句,必须有一个打开的游标。通过调用OPEN_CURSOR ,获取一个数据库内部的维护游标编号。当不再需要使用的时候,需要调用CLOSE_CURSOR关闭。

    c := DBMS_SQL.OPEN_CURSOR;
    • PARSE :解析待执行的动态SQL语句,检查语句语法是否存在问题,并将其与程序中的游标进行关联。 

      DBMS_SQL.PARSE(c, 'INSERT INTO tab VALUES (:bnd1, :bnd2) ' ||                          'RETURNING c1*c2 INTO :bnd3', DBMS_SQL.NATIVE);

      • BIND_VARIABLE :用于将特定的值或变量与待执行的SQL语句中的占位符关联起来。

        DBMS_SQL.BIND_VARIABLE(c, 'bnd1', c1);

        • BIND_ARRAY :用于将数组变量与待执行的SQL 语句中的占位符关联起来。

          DBMS_SQL.BIND_ARRAY(c, 'bnd3', r);

          • DEFINE_COLUMN :用于定义待执行的SELECT语句的最终返回结果集中的列。

            DEFINE_COLUMN: 用于定义待执行的SELECT语句的最终返回结果集中的列。

            • EXECUTE :用于执行已解析SQL。

              n := DBMS_SQL.EXECUTE(c);

              • FETCH_ROWS :用于从指定游标中获取一行数据。

                IF DBMS_SQL.FETCH_ROWS(source_cursor)>0 THEN    -- get column values of the row

                • EXECUTE_AND_FETCH :用于执行已解析的查询SQL,并获取一行数据。

                  r := DBMS_SQL.EXECUTE_AND_FETCH(c);

                  • VARIABLE_VALUE :用于从带有RETURNING的SQL语句中获取绑定变量的返回数据。

                    DBMS_SQL.VARIABLE_VALUE(c, 'bnd3', r);

                    • COLUMN_VALUE :用于获取查询结果集中指定列的数据。

                      DBMS_SQL.COLUMN_VALUE(c, 1, some_dnames);

                      • CLOSE_CURSOR :终章!关闭游标。

                        DBMS_SQL.CLOSE_CURSOR(c);
                        接下来我将使用羲和(Halo)数据库演示上述DBMS_SQL的各个接口。
                        二、环境准备

                        羲和(Halo)数据库设置为ORACLE模式,创建一个演示数据库test_db,创建内部所需的ORACLE拓展。

                        当需要使用oracle相关的特性,建议直接使用hsql进行登录使用。所以此处使用hsql -dtest_db,登录test_db数据库进行接下来的相关操作。

                        三、实际内容演示

                        • single_Row_insert :单行插入,插入数据"一五一十"。

                        • single_Row_update :将数据更新成5,5。

                        • single_Row_Delete : 删除一行数据

                        • Multiple-row insert :  往c1中插入10、20、30,c2中插入11、21、31

                        为multi_Row_update做准备,再次运行multi_Row_insert插入重复数据。

                        • multi_Row_update :将c2为11,对应的c1更新成100

                        • Multiple-row delete :多行删除

                        • exec :支持运行DDL和没有绑定参数的DML语句。

                        • copy :将源表中的数据复制到目标表,这个存储过程有助于帮助大家理解和使用DBMS_SQL。

                        有点长...
                         至此,对于DBMS_SQL的相关简单演示就到此结束了。若文中存在错误或不当之处,敬请指出,以便我进行修正和完善。本文所有测试案例在文末供大家在ORACLE数据库上学习使用。













                        来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70039682/viewspace-3021971/ ,如需转载,请注明出处,否则将追究法律责任。

                        下一篇: 没有了~
                        请登录后发表评论 登录
                        全部评论
                        我司专注数据库领域的研发,核心团队由国内外金融机构核心开发人员组成。目前已经建立了完整的内核研究、产品研发、维护、实施和迁移团队。其拳头产品—HaloDB(羲和数据库)目前已经在金融以及保险行业领域核心系统上线。我们的愿景是成为世界顶尖的数据库软件公司,与用户一起热爱一起成长!

                        注册时间:2024-07-09

                        • 博文量
                          4
                        • 访问量
                          3794