向Oracle中传入数组,批量执行SQL语句
2015-05-09 13:11
302 查看
1、首先用PL/SQL创建package
2、在packagebody内创建存储过程
3、.Net demo如下,可以去掉注释,修改SQL语句测试
示例
create or replace package excuteBatchOperate as type sqlStr_Array is table of varchar2(1000) index by binary_integer; procedure excuteBulkData(sqlStr in sqlStr_Array); end excuteBatchOperate;
2、在packagebody内创建存储过程
create or replace package body excuteBatchOperate as procedure excuteBulkData(sqlStr in sqlStr_Array) as begin for i in 1..sqlStr.count loop execute immediate sqlStr(i);--单个语句中不能再使用分号(;)结束SQL语句,否则会报ORA-00911: 无效字符异常 end loop; end excuteBulkData; end excuteBatchOperate;
3、.Net demo如下,可以去掉注释,修改SQL语句测试
public static int excuteBulkData(IList<string> list) { using (ODAC.OracleConnection conn = new ODAC.OracleConnection(connStr)) { using (ODAC.OracleCommand comm = conn.CreateCommand()) { //IList<string> list = new List<string>(); //list.Add("insert into parts1(pname) values('sadfsa')"); //list.Add("insert into parts1(pnum,pname) values(22222,'rrrrrr')"); conn.Open(); comm.CommandType = CommandType.StoredProcedure; comm.CommandText = "excuteBatchOperate.excuteBulkData"; ODAC.OracleParameter Param1 = new ODAC.OracleParameter(@"v_string", ODAC.OracleDbType.Varchar2); Param1.Direction = ParameterDirection.Input; Param1.CollectionType = ODAC.OracleCollectionType.PLSQLAssociativeArray; Param1.Value = list.ToArray(); comm.Parameters.Add(Param1); return comm.ExecuteNonQuery(); } } }
示例
相关文章推荐
- Oracle如何执行批量sql语句
- 【Oracle】Oracle批量执行SQL语句
- Oracle批量执行SQL语句
- Oracle批量执行sql语句之禁用所有表的外键
- Oracle批量执行sql语句之禁用所有表的外键
- Oracle SQL语句执行过程
- Oracle中SQL语句执行效率的查找与解决
- 【Oracle】三种方式查看SQL语句的执行计划
- 出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误
- oracle查询SQL语句执行的耗时和执行时间
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- Mysql bench执行sql语句批量操作数据所遇到的问题
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- Oracle SQL语句执行顺序
- Oracle中怎样一次执行多条sql语句
- Oracle中SQL语句执行效率的查找与解决
- Oracle sql语句执行顺序(转)
- 关于mysql 执行批量的sql 语句问题:&allowMultiQueries=true
- Mybatis之批量执行SQL语句