Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中的DBMS_ASSERT.enquote_name()_Sql_Oracle - Fatal编程技术网

Sql Oracle中的DBMS_ASSERT.enquote_name()

Sql Oracle中的DBMS_ASSERT.enquote_name(),sql,oracle,Sql,Oracle,我有一个来自的示例代码,我想了解这个XMLGENSQL WITH t AS ( SELECT table_owner , table_name , partition_name , TO_NUMBER (EXTRACTVALUE (XMLTYPE (DBMS_XMLGEN.getxml ('SELECT COUNT(*) AS rows_exist FROM '

我有一个来自的示例代码,我想了解这个XMLGENSQL

WITH t AS (
SELECT   table_owner
       , table_name
       , partition_name
       , TO_NUMBER (EXTRACTVALUE (XMLTYPE (DBMS_XMLGEN.getxml ('SELECT COUNT(*) AS rows_exist FROM '
                                                             || DBMS_ASSERT.enquote_name (str => table_owner)
                                                             || '.'
                                                             || DBMS_ASSERT.enquote_name (str => table_name)
                                                             || ' PARTITION ('
                                                             || DBMS_ASSERT.enquote_name (str => partition_name)
                                                             || ') WHERE ROWNUM <= 1'
                                                              )
                                          )
                                , '/ROWSET/ROW/ROWS_EXIST'
                                 )
                   ) AS rows_exist
    FROM all_tab_partitions
   WHERE table_owner = 'WH'
     AND table_name IN ('POINT_OF_SALE_FACTS')
ORDER BY table_owner
       , table_name
       , partition_position
)
SELECT 'ALTER TABLE '
     || DBMS_ASSERT.enquote_name (str => table_owner)
     || '.'
     || DBMS_ASSERT.enquote_name (str => table_name)
     || ' DROP PARTITION '
     || DBMS_ASSERT.enquote_name (str => partition_name)
     || ';' AS stmt
    , t.*
FROM t
WHERE rows_exist = 0
;
带t作为(
选择表\u所有者
,表格名称
,分区名称
,TO_NUMBER(EXTRACTVALUE(XMLTYPE(DBMS_XMLGEN.getxml('SELECT COUNT(*))作为行存在于'
||DBMS_ASSERT.enquote_名称(str=>table_所有者)
|| '.'
||DBMS_ASSERT.enquote_名称(str=>table_名称)
||'分区('
||DBMS_ASSERT.enquote_名称(str=>partition_名称)
||“)其中ROWNUM表(所有者)
。 在enquote\u name的
(str=>table\u owner)
中,箭头的语法是什么?
我找到了这个,但是没有这样的箭头语法,也找不到这个语法的网站。

这是命名参数的语法。
str=>table\u name
要求将
str
参数设置为
table\u name

在这种情况下,它是不必要的,因为
str
DBMS\u ASSERT.ENQUOTE\u NAME
的第一个参数。因此您可以忽略它,只需调用
DBMS\u ASSERT.ENQUOTE\u NAME(表所有者)

但在某些情况下,它可能非常有用。例如,当有多个可选参数(具有默认值)且您只想指定其中一个时。或者当您想通过在值旁边显示参数名称来阐明参数的用途时