千家信息网

怎么理解数据库的定义者权限与使用者权限

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容介绍了"怎么理解数据库的定义者权限与使用者权限"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2025年01月20日怎么理解数据库的定义者权限与使用者权限

本篇内容介绍了"怎么理解数据库的定义者权限与使用者权限"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我在HR模式下运行了下列语句(没有发生错误):

CREATE TABLE plch_parts(   partnum    NUMBER, partname   VARCHAR2 (50))/BEGIN   INSERT INTO plch_parts        VALUES (123, 'Steering Wheel');   INSERT INTO plch_parts        VALUES (456, 'Brake Pedal');   COMMIT;END;/CREATE OR REPLACE TYPE plch_numbers_t IS TABLE OF NUMBER/CREATE OR REPLACE FUNCTION plch_func   RETURN plch_numbers_t   AUTHID CURRENT_USERIS   l_numbers   plch_numbers_t;BEGIN   SELECT partnum     BULK COLLECT INTO l_numbers     FROM plch_parts;   RETURN l_numbers;END;/CREATE OR REPLACE VIEW plch_func_vAS   SELECT COLUMN_VALUE partnum FROM TABLE (plch_func ())/GRANT SELECT ON plch_func_v TO scott/GRANT EXECUTE ON plch_func TO scott/

然后我又连接到SCOTT模式并执行如下语句:

CREATE TABLE plch_parts(   partnum    NUMBER, partname   VARCHAR2 (50))/BEGIN   INSERT INTO plch_parts        VALUES (100, 'Tire');   INSERT INTO plch_parts        VALUES (101, 'Battery');   COMMIT;END;/

哪些选项显示了下列语句块执行后屏幕上的输出结果?

BEGIN   DBMS_OUTPUT.put_line ('Two Cursor For Loops....');   FOR rec IN (  SELECT p.partname                   FROM TABLE (hr.plch_func) v, plch_parts p                  WHERE v.column_value = p.partnum               ORDER BY p.partnum)   LOOP      DBMS_OUTPUT.put_line (rec.partname);   END LOOP;   FOR rec IN (  SELECT p.partname                   FROM hr.plch_func_v v, plch_parts p                  WHERE v.partnum = p.partnum               ORDER BY p.partnum)   LOOP      DBMS_OUTPUT.put_line (rec.partname);   END LOOP;END;/

(A)

Two Cursor For Loops....Steering WheelBrake Pedal

(B)

An unhandled exception:PLS-00158: AUTHID CURRENT_USER subprograms not allowed in views

(C)

Two Cursor For Loops....TireBattery

(D)

Two Cursor For Loops....TireBatterySteering WheelBrake Pedal

(E)

Two Cursor For Loops....TireBatteryTireBattery

实测答案C

SQL> BEGIN  2     DBMS_OUTPUT.put_line ('Two Cursor For Loops....');  3    4     FOR rec IN (  SELECT p.partname  5                     FROM TABLE (yoga.plch_func) v, plch_parts p  6                    WHERE v.column_value = p.partnum  7                 ORDER BY p.partnum)  8     LOOP  9        DBMS_OUTPUT.put_line (rec.partname); 10     END LOOP; 11   12     FOR rec IN (  SELECT p.partname 13                     FROM yoga.plch_func_v v, plch_parts p 14                    WHERE v.partnum = p.partnum 15                 ORDER BY p.partnum) 16     LOOP 17        DBMS_OUTPUT.put_line (rec.partname); 18     END LOOP; 19  END; 20  /Two Cursor For Loops....TireBatteryPL/SQL procedure successfully completedSQL>

答案C.

一个定义为调用者权限(AUTHID CURRENT_USER)的函数,如果它在一个VIEW或者触发器中被调用,这时是按照定义者的权限来运作的,所以你通过VIEW看到的将是OWNER的数据,而不是当前用户的数据。

"怎么理解数据库的定义者权限与使用者权限"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

权限 数据 语句 使用者 数据库 内容 更多 模式 知识 答案 输出 实用 学有所成 接下来 函数 困境 实际 屏幕 情况 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发人才外派怎么收费 安徽工业软件开发费用 怎么把数据库备份到电脑 必火网络安全多少钱 新氧科技与美国互联网 数据库中 金额加密 软件开发工程好湖南岚鸿 不懂英文可以考网络技术三级 求生之路2四人联机用什么服务器 怎么让2台服务器不共享 网络安全宣传手绘画教程 软件开发中的技术确认 六盘水高密度存储服务器费用 社会环境对数据库的需求 网站服务器管理工具下载 广东金融行业风控产品软件开发 济南软件开发工资一般多少知乎 郑州商城软件开发放心省心 pg数据库怎么编辑视图 启明星辰网络安全审计系统 软件开发专业考一建 河北胜思软件开发有限公司 软件开发sr职级是什么意思 西藏关于网络技术方面的招聘 便利蜂软件开发怎么发工资 以色列网络技术 木瓜互联网科技手抄报模板高中 iis搭建web服务器错误 轻量级云服务器安装docker 怀仁网络安全信息化
0