【问题标题】:What does the following query do?下面的查询是做什么的?
【发布时间】:2023-02-07 11:05:54
【问题描述】:

这个查询在 Oracle 中做什么?这是一个系统生成的查询。

DELETE FROM LBACSYS.LBAC$POLT WHERE TBL_NAME = UPPER(:B2 ) AND OWNER = UPPER(:B1 )

我用谷歌搜索了一下,发现它与标签安全有关,仅此而已。

【问题讨论】:

    标签: oracle12c label-control


    【解决方案1】:

    如果表名和所有者名匹配,则从表中删除条目。

    【讨论】:

      【解决方案2】:

      它从 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多