怎么理解数据库的定义者权限与使用者权限
本篇内容介绍了“怎么理解数据库的定义者权限与使用者权限”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我在HR模式下运行了下列语句(没有发生错误):
CREATETABLEplch_parts(partnumNUMBER,partnameVARCHAR2(50))/BEGININSERTINTOplch_partsVALUES(123,'SteeringWheel');INSERTINTOplch_partsVALUES(456,'BrakePedal');COMMIT;END;/CREATEORREPLACETYPEplch_numbers_tISTABLEOFNUMBER/CREATEORREPLACEFUNCTIONplch_funcRETURNplch_numbers_tAUTHIDCURRENT_USERISl_numbersplch_numbers_t;BEGINSELECTpartnumBULKCOLLECTINTOl_numbersFROMplch_parts;RETURNl_numbers;END;/CREATEORREPLACEVIEWplch_func_vASSELECTCOLUMN_VALUEpartnumFROMTABLE(plch_func())/GRANTSELECTONplch_func_vTOscott/GRANTEXECUTEONplch_funcTOscott/
然后我又连接到SCOTT模式并执行如下语句:
CREATETABLEplch_parts(partnumNUMBER,partnameVARCHAR2(50))/BEGININSERTINTOplch_partsVALUES(100,'Tire');INSERTINTOplch_partsVALUES(101,'Battery');COMMIT;END;/
哪些选项显示了下列语句块执行后屏幕上的输出结果?
BEGINDBMS_OUTPUT.put_line('TwoCursorForLoops....');FORrecIN(SELECTp.partnameFROMTABLE(hr.plch_func)v,plch_partspWHEREv.column_value=p.partnumORDERBYp.partnum)LOOPDBMS_OUTPUT.put_line(rec.partname);ENDLOOP;FORrecIN(SELECTp.partnameFROMhr.plch_func_vv,plch_partspWHEREv.partnum=p.partnumORDERBYp.partnum)LOOPDBMS_OUTPUT.put_line(rec.partname);ENDLOOP;END;/
(A)
TwoCursorForLoops....SteeringWheelBrakePedal
(B)
Anunhandledexception:PLS-00158:AUTHIDCURRENT_USERsubprogramsnotallowedinviews
(C)
TwoCursorForLoops....TireBattery
(D)
TwoCursorForLoops....TireBatterySteeringWheelBrakePedal
(E)
TwoCursorForLoops....TireBatteryTireBattery
实测答案C
SQL>BEGIN2DBMS_OUTPUT.put_line('TwoCursorForLoops....');34FORrecIN(SELECTp.partname5FROMTABLE(yoga.plch_func)v,plch_partsp6WHEREv.column_value=p.partnum7ORDERBYp.partnum)8LOOP9DBMS_OUTPUT.put_line(rec.partname);10ENDLOOP;1112FORrecIN(SELECTp.partname13FROMyoga.plch_func_vv,plch_partsp14WHEREv.partnum=p.partnum15ORDERBYp.partnum)16LOOP17DBMS_OUTPUT.put_line(rec.partname);18ENDLOOP;19END;20/TwoCursorForLoops....TireBatteryPL/SQLproceduresuccessfullycompletedSQL>
答案C.
一个定义为调用者权限(AUTHID CURRENT_USER)的函数,如果它在一个VIEW或者触发器中被调用,这时是按照定义者的权限来运作的,所以你通过VIEW看到的将是OWNER的数据,而不是当前用户的数据。
“怎么理解数据库的定义者权限与使用者权限”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。