最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

lightdb 普通用户拥有XMLTYPE类型的访问权限

维修 admin 65浏览 0评论

lightdb 普通用户拥有XMLTYPE类型的访问权限

文章目录

  • 概述
  • 示例
  • 总结

概述

在信创移植的SQL语句中,有来源于Oracle数据库的SQL语句。

在Oracle中存在getClobVal函数,这个函数是Oracle中sys.XMLType的成员方法。

因此在LightDB23.3版本中实现了TYPE支持定义成员方法并且在新定义的XMLType类型中实现getClobVal成员方法。

但是实际场景是普通用户需要默认有XMLType.getClobValue的执行权限,无需另外进行授权。对此 LightDB 23.3.02增量版本进行了支持。

示例

使用ltsql进行命令行

构建数据库

create database test_oracle with lightdb_syntax_compatible_type  oracle;
\c test_oracle
select dbms_output.serveroutput(true);

构建用户

create user u106761 with password 'Test01@123';

切换到普通用户

set role u106761;

创建表

CREATE TABLE xml_table (id NUMBER,xml_column XMLType
);
INSERT INTO xml_table (id, xml_column)
VALUES (1, XMLType('<root><name>John</name></root>'));

使用XMLType

DECLAREv_clob CLOB;
BEGINSELECT XMLType.getClobVal(xml_column) INTO v_clob FROM xml_table WHERE id = 1;DBMS_OUTPUT.PUT_LINE('CLOB value: ' || v_clob);
END;
/CLOB value: <root><name>John</name></root>
DO

总结

普通用户可以正常调用XMLType的成员方法,不会报权限错误。

lightdb 普通用户拥有XMLTYPE类型的访问权限

文章目录

  • 概述
  • 示例
  • 总结

概述

在信创移植的SQL语句中,有来源于Oracle数据库的SQL语句。

在Oracle中存在getClobVal函数,这个函数是Oracle中sys.XMLType的成员方法。

因此在LightDB23.3版本中实现了TYPE支持定义成员方法并且在新定义的XMLType类型中实现getClobVal成员方法。

但是实际场景是普通用户需要默认有XMLType.getClobValue的执行权限,无需另外进行授权。对此 LightDB 23.3.02增量版本进行了支持。

示例

使用ltsql进行命令行

构建数据库

create database test_oracle with lightdb_syntax_compatible_type  oracle;
\c test_oracle
select dbms_output.serveroutput(true);

构建用户

create user u106761 with password 'Test01@123';

切换到普通用户

set role u106761;

创建表

CREATE TABLE xml_table (id NUMBER,xml_column XMLType
);
INSERT INTO xml_table (id, xml_column)
VALUES (1, XMLType('<root><name>John</name></root>'));

使用XMLType

DECLAREv_clob CLOB;
BEGINSELECT XMLType.getClobVal(xml_column) INTO v_clob FROM xml_table WHERE id = 1;DBMS_OUTPUT.PUT_LINE('CLOB value: ' || v_clob);
END;
/CLOB value: <root><name>John</name></root>
DO

总结

普通用户可以正常调用XMLType的成员方法,不会报权限错误。

发布评论

评论列表 (0)

  1. 暂无评论