spi*_*er8 2 sql oracle oracle10g
我试图从all_tab_partitions表中获取当前分区的名称.当我尝试比较high_value(长数据类型)和数字.它抛出一个错误:
ORA-00997:非法使用LONG数据类型
SELECT PARTITION_NAME, HIGH_VALUE FROM ALL_TAB_PARTITIONS
WHERE TABLE_OWNER='SCHEMA_NAM'
AND TABLE_NAME='TABLE_NAME'
AND HIGH_VALUE>to_number(TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, 1), 'MONTH'), 'YYYYDDD'))
/
Run Code Online (Sandbox Code Playgroud)
长类型存储大变量长度字符串,它不是数字类型.它有很多局限性.Oracle文档说:
使用LONG值受以下限制:
为了检查或使用 LONG 列的值,您必须编写一些 PL/SQL,类似于
DECLARE
strHigh_value VARCHAR2(4000);
BEGIN
FOR aRow IN (SELECT PARTITION_NAME, HIGH_VALUE
FROM ALL_TAB_PARTITIONS
WHERE TABLE_OWNER = 'SCHEMA_NAM' AND
TABLE_NAME = 'TABLE_NAME')
LOOP
strHigh_value := aRow.HIGH_VALUE;
-- TODO: Manipulate strHigh_value in whatever manner you need
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
分享和享受。
| 归档时间: |
|
| 查看次数: |
13887 次 |
| 最近记录: |