利用Ant向Oracle中插入資料

2021-06-01 12:50:52 字數 2267 閱讀 2198

[1] 去掉指令碼中的包含commit、「setserverout off」、「set serverout on」、「set escape on」,和 「exec」的語句

[2] 去掉「/」

[3] 語句分隔符最好使用 「分隔符」 + 「換行」,如:

alter table *** add (temp_adv******* clob)!
update *** set temp_adv******* = adv*******! 

[4]  插入配置資料前需先判斷資料是否存在

當我們要在wcmconfig表中插入一條配置資料的時候,需要先判斷該配置引數是否存在,注意該**是以「end;!」結尾,如:

declare v_count  number(10);

begin   select count(*) into v_count from  *** where ckey = 'kms_upload_file_max_size' ;

if(v_count<=0 or v_count is null)  then  insert into  ***(configid,ctype,ckey,cvalue,cdesc) select max(configid)+1,12,'kms_upload_file_max_size','6291456','批量上傳時可以上傳的最大檔案大小,單位為k' from  ***;

update yyyset nextid=0 where  tablename='***';  end if;

end;! 

[5]  表上增加列需要先判斷列是否存在

當我們要在***表上增加leafflag列時,需要先判斷***表是否已經存在leafflag列,注意該**是以「end;!」結尾,具體**如下:

--增加是否允許建立子場景(即是否為葉子節點)的字段 2011.10.12 by liwei

declare v_count  number(10);  begin

select count(*) into v_count from cols  where table_name = '***' and  column_name='leafflag' ;

if(v_count<=0 or v_count is null)  then  execute immediate('alter table  *** add leafflag number default 0 not null');

end if;  end;!

注意:

當我們需要使用begin end語句塊的時候,begin語句塊中只能使用dml(資料操作語言,如:insert、delete、update和select),如增加配置引數的**:

declare v_count  number(10); 

begin  

select count(*) into v_count from  *** where ckey = 'kms_upload_file_max_size' ;

if(v_count<=0 or v_count is null)  then

insert into  ***(configid,ctype,ckey,cvalue,cdesc) select max(configid)+1,12,'kms_upload_file_max_size','6291456','批量上傳時可以上傳的最大檔案大小,單位為k' from wcmconfig;

update yyy set nextid=0 where  tablename='***';

end if;

end;!

當我們在增加列的時候,可能會使用到alter操作來給乙個表新增一列,這時候我們需要使用動態sql(也就是execute immediate)來執行。因為begin end 語句塊中只能執行dml語言,如果要執行ddl(alter、create等)語言,需要使用動態sql。如:

declare v_count  number(10);

begin

select count(*) into v_count from cols

where table_name = '***' and  column_name='leafflag' ;

if(v_count<=0 or v_count is null)  then

execute  immediate('alter table *** add leafflag number default 0 not  null');

end if;

end;!

向oracle中clob欄位插入資料

sql create or replace directory dir1 as c oracle directory created.sql sql declare 2 l bfile bfile 3 l clob clob 4 l str varchar2 1000 5 begin 6 inser...

快速向oracle中批量插入資料

當oracle表主鍵為自增型別時,可採用sql指令碼快速插入一些資料來達到豐富測試場景的目的,具體如下 begin for i in 1 5000 loop insert into table name values i,col name2,col name3 commit end loop end...

oracle同時向多表插入資料

在oracle操作過程中經常會遇到同時向多個不同的表插入資料,此時用該語句就非常合適。all表示非短路運算,即滿足了第乙個條件也得向下執行檢視是否滿足其它條件,而first是短路運算找到合適條件就不向下進行。insert all when prod category b then into book...