向Oracle中传入数组,批量执行SQL语句

1、首先用PL/SQL创建package

1 create or replace package excuteBatchOperate
2 as
3  type sqlStr_Array is table of varchar2(1000) index by binary_integer;
4  procedure excuteBulkData(sqlStr in sqlStr_Array);
5  end excuteBatchOperate;

2、在packagebody内创建存储过程

 1 create or replace package body excuteBatchOperate
 2 as
 3 procedure excuteBulkData(sqlStr in sqlStr_Array)
 4   as
 5   begin
 6     for i in 1..sqlStr.count loop
 7        execute immediate sqlStr(i);
 8     end loop;
 9   end excuteBulkData;
10   end excuteBatchOperate;

3、.Net demo如下,可以去掉注释,修改SQL语句测试

 1  public static int excuteBulkData(IList<string> list)
 2         {
 3             using (ODAC.OracleConnection conn = new ODAC.OracleConnection(connStr))
 4             {
 5                 using (ODAC.OracleCommand comm = conn.CreateCommand())
 6                 {
 7                     //IList<string> list = new List<string>();
 8                     //list.Add("insert into parts1(pname) values(‘sadfsa‘)");
 9                     //list.Add("insert into parts1(pnum,pname) values(22222,‘rrrrrr‘)");
10                     conn.Open();
11                     comm.CommandType = CommandType.StoredProcedure;
12                     comm.CommandText = "excuteBatchOperate.excuteBulkData";
13                     ODAC.OracleParameter Param1 = new
14 ODAC.OracleParameter(@"v_string", ODAC.OracleDbType.Varchar2);
15                     Param1.Direction = ParameterDirection.Input;
16                     Param1.CollectionType = ODAC.OracleCollectionType.PLSQLAssociativeArray;
17                     Param1.Value = list.ToArray();
18                     comm.Parameters.Add(Param1);
19                    return comm.ExecuteNonQuery();
20                 }
21             }
22         }

示例

时间: 2024-11-07 08:28:42

向Oracle中传入数组,批量执行SQL语句的相关文章

SQL*PLUS中批量执行SQL语句

SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书),最后将所有的SQL语句一次性的执行完成. 首先,将要执行的所有的SQL语句,全部写入某个sql文件当中.例如f:\test.sql; 然后,通过通过sqlplus连接到数据库:如: SQL> sqlplus test/[email protected]; 再执行如下命令: SQL> @f:\te

mysqli扩展库应用---批量执行sql语句

1, mysqli批量执行sql语句.基本语法: $sqls=”sql1;sql2;………” mysqli::multi_query($sqls); 同一个$sqls要么是增删改语句集合,要么是查询语句的集合,查询语句和增删改最好不要混合.应用示例如下: ① 操作数据库的代码: <?php class mysqliMutiTool{ private $mysqli = null; private static $host = "10.252.158.217"; private s

批量执行sql语句

基本使用 $sqls="sql语句1;sql语句2;sql语句n"; 或 $sqls="insert into xx;";  $sqls.="insert into xx;"; $res=mysqli::multi_query($sqls); 如果$sqls 是dml 语句,则$res 返回布尔值: 如果$sqls 是dql 语句,则$res 返回多个结果集,需要使用mysqli::store_result() 和 mysqli::more_re

JDBC连接MYSQL,批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句

conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("truncate QB_ShowCount_Asite_copy"); ps.executeBatch(); String SrcSql = "select convert(unhex(hex(convert(Community using latin1))) using utf8) as Commu

ThinkPHP3.2.3批量执行sql语句(带事务)

/*** 事务封装方法* @access public 将此方法放入框架model.class.php中* @param array $sqls 要执行的sql数组或语句* @param array $vals sql语句中要替换的值* @return boolean*/public function transExecuteSql($sqls){ $this->startTrans(); if(is_array($sqls)){foreach($sqls as $k => $sql){ $r

批量执行SQL语句,进行删除,插入或者更改。

private bool ExecuteTransaction(List<string> list) { using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["LocalConnectionString"].ToString())) { SqlCommand command = new SqlCommand(); S

MySQL中批量执行SQL语句

DROP DATABASE IF EXISTS databaseWeb; -- 如果存在,则删除模式 databaseWebCREATE DATABASE databaseWeb CHARACTER SET utf8; -- 创建模式 databaseWeb.使用 utf8 编码 USE databaseWeb; -- 切换到模式 databaseWeb,以下操作均在 databaseWeb 下 set NAMES 'utf8'; -- 控制台使用 utf8 编码,若使用gbk编码则会使插入中文

mysql工具Navicat批量执行SQL语句

例如:我现在要同时执行这么多语句 update community set xqmc=replace(xqmc,' ',''); update community set xqbm=replace(xqbm,' ',''); update community set dkxx=replace(dkxx,' ',''); update community set ssqy=replace(ssqy,' ',''); update community set ssjd=replace(ssjd,'

jdbc批量执行SQL insert 操作

package com.file; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; public class ResolvFile { public static String readFileContent(String filepath) { //1.读取每一行记录,保存到List中 ArrayList<String> records = new ArrayList&