利用Ant向Oracle中插入数据
[1] 去掉脚本中的包含commit、“setserverout off”、“set serverout on”、“set escape on”,和 “exec”的语句 [2] 去掉“/
[1] 去掉脚本中的包含commit、“setserverout off”、“set serverout on”、“set escape on”,和 “exec”的语句
[2] 去掉“/”
[3] 语句分隔符最好使用 “分隔符” + “换行”,如:
ALTER TABLE xxx ADD (temp_advtoolbar CLOB)! UPDATE xxx SET temp_advtoolbar = advtoolbar!
[4] 插入配置数据前需先判断数据是否存在
当我们要在WCMConfig表中插入一条配置数据的时候,需要先判断该配置参数是否存在,注意该代码是以“end;!”结尾,如:
declare v_count number(10);
beginSELECT count(*) into v_count FROM xxx WHERE CKey = 'KMS_UPLOAD_FILE_MAX_SIZE' ;
if(v_count insert into xxx(configid,ctype,ckey,cvalue,cdesc) select max(configid)+1,12,'KMS_UPLOAD_FILE_MAX_SIZE','6291456','批量上传时可以上传的最大文件大小,单位为k' from xxx; update yyyset nextid=0 where tablename='xxx';end if;
end;![5] 表上增加列需要先判断列是否存在
当我们要在xxx表上增加LEAFFLAG列时,,需要先判断xxx表是否已经存在LEAFFLAG列,注意该代码是以“end;!”结尾,具体代码如下:
--增加是否允许创建子场景(即是否为叶子节点)的字段 2011.10.12 by liwei
declare v_count number(10);begin
SELECT count(*) into v_count FROM colsWHERE table_name = 'xxx' and column_name='LEAFFLAG' ;
if(v_count execute immediate('alter table xxx 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 xxx WHERE CKey = 'KMS_UPLOAD_FILE_MAX_SIZE' ;
if(v_count
insert into xxx(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='xxx';
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 = 'xxx' and column_name='LEAFFLAG' ;
if(v_count
execute immediate('alter table xxx add LeafFlag number default 0 not null');
end if;
end;!
上一篇: 卤鸡要多长时间才能卤好?
推荐阅读
-
向数据库中插入数据并返回当前插入的行数及全局变量@@IDENTITY应用
-
JavaScript开发中利用jQuery将多条数据插入模态框的示例代码
-
向Oracle数据库的CLOB属性插入数据报字符串过长错误
-
mssql 一次向表中插入多条数据的方法分享 (转自:http://www.maomao365.com/?p=6058)
-
MyBatis在Oracle中插入数据并返回主键的问题解决
-
利用shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中
-
利用pandas连接mysql,oracle数据库进行查询和插入操作(教程)
-
翻译:如何向MariaDB中快速插入数据(已提交到MariaDB官方手册)
-
往Oracle数据库中插入NCLOB/CLOB类型数据
-
oracle数据库中批量把一张表里面的数据插入到不同的表中的方法