日期:2014-05-17  浏览次数:20816 次

这个代码错在哪里?关于存储过程与字符串连接的
我下面的代码目的是写一个存储过程,创建5个功能一样表空间名则分别为lee_tablespace_1~lee_tablespace_5
运行时有错 不知道具体错在哪里
请教达人~
SQL code
create or replace procedure create_tablespace
as
i number;
begin
i:=1;
loop
create tablespace 'lee_tablespace_'||i
datafile '/var/oracle/oradata/db0/lee_tablespace_t'||i||'.dat' 
size 1500m autoextend on
default storage (initial 1000m next 50m minextents 1 maxextents unlimited pctincrease 
i:=i+1;
if i>5 then
exit
end if
end loop
end


------解决方案--------------------
是不是要用动态SQL来创建啊
------解决方案--------------------
要用动态SQL。。。
------解决方案--------------------
建表语句肯定要用动态SQL的
更别说你这还是动态拼接的呢
------解决方案--------------------
SQL code
create or replace procedure create_tablespace
as
i number;
temp_sql varchar(2000);
begin
i:=1;
  loop
    temp_sql:='create tablespace ''lee_tablespace_'''||to_char(i)||'
               datafile ''/var/oracle/oradata/db0/lee_tablespace_t'''||to_char(i)||'''.dat'' 
               size 1500m autoextend on
               default storage (initial 1000m next 50m minextents 1 maxextents unlimited pctincrease ';

    execute immediate temp_sql;
   i:=i+1;
   if i>5 then
     exit;
   end if;
  end loop;
end