[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...