表空间扩展问题
现在不想写JAVA程序 使用了oracle的job方式  
所以想写个存储过程 让job执行的时候去判断一下容量多大了 足够大了就创建个新的数据文件
create or replace procedure PRC_CREATE_TABLESPACES is
   MAX_SPACE_ID NUMBER := 0;
   resultstr    number := 0;
   STR_SQL      VARCHAR2(2000);
   space_name   VARCHAR2(1000);
begin
   select t.used_percent
     into resultstr
     from dba_tablespace_usage_metrics t
    where t.tablespace_name = 'wlw116';
   IF resultstr > 90 then
     select max(d.FILE_ID)
       into MAX_SPACE_ID
       from dba_data_files d
      where d.TABLESPACE_NAME = 'wlw116';
     MAX_SPACE_ID := MAX_SPACE_ID + 1;
     space_name   := 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\wlw116_' ||
                     MAX_SPACE_ID || '.DBF'  
     STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
                     'SIZE 20480M AUTOEXTEND OFF; ';
     dbms_output.put_line('sql======================' || STR_SQL);
     --EXECUTE IMMEDIATE STR_SQL;  
   end if;
end PRC_CREATE_TABLESPACES;
报错:
PROCEDURE TESTUSER.PRC_CREATE_TABLESPACES 编译错误
错误:PLS-00103: 出现符号 "STR_SQL"在需要下列之一时:
         * & = - + ; < / > at in
           is mod remainder not rem <an exponent (**)> <> or != or ~= >=
           <= <> and or like LIKE2_ LIKE4_ LIKEC_ between || member
           SUBMULTISET_
        符号 ";" 被替换为 "STR_SQL" 后继续。
行:21
文本:STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
------解决方案--------------------问题出在:
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
 'SIZE 20480M AUTOEXTEND OFF; ';
请把OFF后面的分号去掉:
SQL code
STR_SQL := 'ALTER TABLESPACE wlw116 ADD DATAFILE ' || space_name ||
  'SIZE 20480M AUTOEXTEND OFF';
------解决方案--------------------
实测 :
space_name := 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\wlw116_' ||
 MAX_SPACE_ID || '.DBF'  
该语句后面少个分号。