lightdb 创建存储过程 支持 AUTHID CURRENT_USER 与 AUTHID DEFINER 语法糖

LightDB24.1版新增对AUTHID语法支持,允许在存储过程中使用CURRENT_USER或DEFINER,展示了权限设置和调用示例。
摘要由CSDN通过智能技术生成

lightdb 创建存储过程 支持 AUTHID CURRENT_USER 与 AUTHID DEFINER 语法糖

背景

在业务产品中,存在 oracle 移植过来的 sql 语句。它们在存储过程中使用语法 AUTHID CURRENT_USER 与 AUTHID DEFINER 创建存储过程 。lightdb 24.1 版本 对此进行了支持。

lightdb 关于 AUTHID CURRENT_USER 与 AUTHID DEFINER

lightdb 24.1 版本之前 创建存储过程使用AUTHID CURRENT_USER 与 AUTHID DEFINER语法将报错。

lightdb 24.1 版本之后 创建存储过程支持使用 AUTHID CURRENT_USER 与 AUTHID DEFINER 语法。

lightdb 实现前与实现后使用 AUTHID CURRENT_USER 语法 或者 AUTHID DEFINER 语法 或者 不使用。存储过程均为调用者权限。

调用者与定义者语法创建的存储过程使用示例

创建用户并赋予权限

create user xiaomu1;
create user xiaomu2;

create schema xiaomu1;
create schema xiaomu2;

grant all on schema xiaomu1 to xiaomu1;
grant all on schema xiaomu2 to xiaomu1;
grant all on schema xiaomu2 to xiaomu2;

进入用户 xiaomu2 创建表与调用者权限语法存储过程并调用

 \c - xiaomu2

CREATE TABLE department3
(v_deptno NUMBER, 
v_dname  VARCHAR2(20),
v_mgr    NUMBER,
v_loc    NUMBER);

CREATE OR REPLACE PROCEDURE create_dept10 (
 v_deptno NUMBER,
 v_dname  VARCHAR2,
 v_mgr    NUMBER,
 v_loc    NUMBER) 
AUTHID CURRENT_USER AS
BEGIN
  INSERT INTO department3 VALUES (v_deptno, v_dname, v_mgr, v_loc);
END;
/

CALL xiaomu2.create_dept10(11,'INFO',300,1800);
SELECT *from department3;

执行结果

在这里插入图片描述

进入用户 xiaomu1 创建表并执行存储过程

 \c - xiaomu1
 
CREATE TABLE department3
(v_deptno NUMBER, 
v_dname  VARCHAR2(20),
v_mgr    NUMBER,
v_loc    NUMBER);

CALL xiaomu2.create_dept10(11,'INFO',300,1800);
SELECT *from department3;

执行结果

在这里插入图片描述
进入用户xiaomu2 重新创建定义者权限语法的存储过程并调用 (保持调用者权限)

 \c - xiaomu2

CREATE OR REPLACE PROCEDURE create_dept10 (
 v_deptno NUMBER,
 v_dname  VARCHAR2,
 v_mgr    NUMBER,
 v_loc    NUMBER) 
 AS
BEGIN
  INSERT INTO department3 VALUES (v_deptno, v_dname, v_mgr, v_loc);
END;
/

CALL xiaomu2.create_dept10(11,'INFO',300,1800);
SELECT *from department3;

执行结果
在这里插入图片描述
进入用户 xiaomu1 执行存储过程(保持调用者权限)

 \c - xiaomu1

CALL xiaomu2.create_dept10(11,'INFO',300,1800);
SELECT *from department3;

执行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值