【发布时间】:2023-02-07 11:05:54
【问题描述】:
这个查询在 Oracle 中做什么?这是一个系统生成的查询。
DELETE FROM LBACSYS.LBAC$POLT WHERE TBL_NAME = UPPER(:B2 ) AND OWNER = UPPER(:B1 )
我用谷歌搜索了一下,发现它与标签安全有关,仅此而已。
【问题讨论】:
这个查询在 Oracle 中做什么?这是一个系统生成的查询。
DELETE FROM LBACSYS.LBAC$POLT WHERE TBL_NAME = UPPER(:B2 ) AND OWNER = UPPER(:B1 )
我用谷歌搜索了一下,发现它与标签安全有关,仅此而已。
【问题讨论】:
如果表名和所有者名匹配,则从表中删除条目。
【讨论】:
它从 LBACSYS 拥有的 LBAC$POLT 表中删除所有行
tbl_name 等于通过b2 参数(或绑定变量)传递的值,转换为大写owner等于通过b1传递的值,转换为大写
例如:
SQL> select * from lbac$polt;
OWNER TABLE_NAME
----- ----------
SCOTT EMP
SCOTT DEPT
(这是一个使用替换变量的 SQL*Plus 客户端,例如 &b2;您的代码使用绑定变量;最后,结果是一样的):
SQL> delete from lbac$polt where table_name = upper('&b2') and owner = upper('&b1');
Enter value for b2: emp
Enter value for b1: scott
old 1: delete from lbac$polt where table_name = upper('&b2') and owner = upper('&b1')
new 1: delete from lbac$polt where table_name = upper('emp') and owner = upper('scott')
1 row deleted.
结果:
SQL> select * from lbac$polt;
OWNER TABLE_NAME
----- ----------
SCOTT DEPT
SQL>
【讨论】: