精华内容
下载资源
问答
  • oracle 存储过程批量插入大量数据declarenumCount number;userName varchar2(512);email varchar2(512);markComment varchar2(512);maxId number;beginnumCount := 1;userName := 'userName number : .';email := '...

    oracle 存储过程批量插入大量数据

    declare

    numCount number;

    userName varchar2(512);

    email varchar2(512);

    markComment varchar2(512);

    maxId number;

    begin

    numCount := 1;

    userName := 'userName number : .';

    email := 'email number : ';

    markComment := 'markComment number .';

    for i in 1 .. 1000 loop

    for j in 1 .. 1000 loop

    insert into userInfo (userId,userName,email,markComment) values

    (numCount,userName||numCount,email||numCount,markComment||numCount);

    numCount := numCount + 1;

    end loop;

    commit;

    end loop;

    end;

    /

    总结

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

    展开全文
  • 最近在学习Node.js的mysql模块,遇到一个问题:如何调用存储过程批量数据一次性写入表中?想传入一个数组作为参数,但mysql存储过程不支持。可以使用for循环,但性能差。于是,想了一个方法:多语句执行。现有一个...

    最近在学习Node.js的mysql模块,遇到一个问题:

    如何调用存储过程把批量数据一次性写入表中?

    想传入一个数组作为参数,但mysql存储过程不支持。

    可以使用for循环,但性能差。

    于是,想了一个方法:多语句执行。

    现有一个user表,包含id(自增),uname,age三个字段。

    存储过程MultiProc,接收两个参数(uname, age),作用是往user表插入一条数据。

    现在要批量插入多条数据,比如

    [

    {

    "uname": "alice",

    "age": 18

    },

    {

    "uname": "bob",

    "age": 20

    },

    ...

    ]

    用Node.js 可以这样做:

    function (datas, callback) {

    let len = datas.length;

    let sql = "call MultiProc(?, ?); ";

    let sqls = sql.repeat(len); //重复语句

    let params = [];

    for (let i = 0; i < len; i++) {

    let data = datas[i];

    params.push(data.uname, data.age);

    }

    query(sqls, params, callback);

    }

    简单讲,就是重复多次待执行的sql语句,把数据“平铺”放在一个数组中。

    展开全文
  • 什么是存储过程(stored procedure)是一组为了完成特定功能的sql语句集,是利用sql server所提供的transact-sql语言所编写的程序。经编译后存储在中。存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字...

    什么是

    存储过程(stored procedure)是一组为了完成特定功能的sql语句集,是利用sql server所提供的transact-sql语言所编写的程序。经编译后存储在中。存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是由流控制和sql语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值

    存储过程语法

    create procedure [拥有者.]存储过程名[;程序编号]   [(参数#1,…参数#1024)]   [with   {recompile | encryption | recompile, encryption}   ]   [for replication]

    看一个简单的实例

    create procedure order_tot_amt   @o_id int,   @p_tot int output   as   select @p_tot = sum(unitprice*quantity)   from orderdetails   where ordered=@o_id   go

    下面来看一个利用存储过程批量导入数据实例

    declare @mycounter int

    set @mycounter = 0 /*设置变量*/

    while (@mycounter < 2) /*设置循环次数*/

    begin

    waitfor delay '000:00:10' /*延迟时间10秒*/

    insert into time_by_day

    (time_id, the_date, the_year, month_of_year, quarter, day_of_month)

    select top 1 time_id + 1 as time_id, the_date + 1 as the_date, year(the_date + 1)

    as the_year, month(the_date + 1) as month_of_year, { fn quarter(the_date + 1)

    } as quarter, day(the_date + 1) as day_of_month

    from time_by_day

    order by time_id desc

    set @mycounter = @mycounter + 1

    end

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 好吧,一直都只知道数据库的增删改查,其他的什么事务、存储过程用的很少,今天开始项目代码编写,数据库中用户表居然一条记录都没有,既然没有记录我还怎么查询呢?想往用户表添加20条记录,难道我要一条一条的手动...

    很久很久没有写篇文章了,主要是找不到写的,还有就是懒得写,但是今天这篇文章必须写的,因为我知道今后肯定还会用到。

    好吧,一直都只知道数据库的增删改查,其他的什么事务、存储过程用的很少,今天开始项目代码编写,数据库中用户表居然一条记录都没有,既然没有记录我还怎么查询呢?想往用户表添加20条记录,难道我要一条一条的手动添加,程序员怎么可以这样?????

    好吧,写个存储过程!代码如下:

    CREATE PROCEDURE InsertUsers()

    BEGIN

    DECLARE userName VARCHAR(50);

    DECLARE userPwd VARCHAR(50);

    DECLARE userTureName VARCHAR(50);

    DECLARE userTelephone VARCHAR(50);

    DECLARE userMobilephone VARCHAR(50);

    DECLARE userQq VARCHAR(50);

    DECLARE userAddress VARCHAR(50);

    DECLARE userEmail VARCHAR(50);

    DECLARE userIsFrezee int;

    DECLARE userParentId int;

    DECLARE userRemark VARCHAR(50);

    DECLARE userSpId int;

    DECLARE i int;

    set userPwd = "123456789";

    set userTureName = "testUser";

    set userTelephone = "123456789";

    set userMobilephone = "123456789";

    set userQq = "123456798";

    set userAddress = "学府路一段24号";

    set userEmail = "asd@qq.com";

    set userIsFrezee = 0;

    set userParentId = 1;

    set userRemark = "test_user";

    set userSpId = 1;

    set i = 1;

    loop1:WHILE(i < 21)

    do

    Set userName=concat('danger',i);

    INSERT into t_user(user_name, user_pwd, user_true_name, user_telephone, user_mobilephone, user_qq_number, user_address, user_email, user_isfrezee, user_parent_id, user_remark, user_sp_id)

    VALUES(userName, userPwd, userTureName, userTelephone, userMobilephone, userQq, userAddress, userEmail, userIsFrezee, userParentId, userRemark, userSpId);

    SET i = i + 1;

    end while loop1;

    END

    存储过程写好了, CALL IsertUsers()即可;

    问题一:SET一个变量的值后,居然不能继续DECLARE另外一个变量,也就是说DECLARE语句不能写在SET语句之后?

    例如:

    CREATE PROCEDURE test()

    BEGIN

    DECLARE a VARCHAR(20);

    set a = "ddd";

    DECLARE b VARCHAR(20);

    END;

    上面的写法居然报错,改一改位置:

    CREATE PROCEDURE test()

    BEGIN

    DECLARE a VARCHAR(20);

    DECLARE b VARCHAR(20);

    set a = "ddd";

    END;

    正确!难道是我哪儿出问题了,对于这样的设计感到很无奈!

    问题二:MySQL连接两个字符居然用“+”,

    还好有

    concat

    函数,多好的,还解决了类型转换。

    展开全文
  • mysql 通过存储过程批量更新表数据

    千次阅读 2021-01-21 04:48:20
    方法一:使用临时表批量更新表数据 (注意操作用户需要有mysql的创建临时表权限)delimiter $$# 删除 已有的 存储过程DROP PROCEDURE IF EXISTS update_user_account_method;# 创建新的存储过程CREATE PROCEDURE ...
  • 本文主要讲述了mysql实现查询数据并根据条件更新到另一张表的方法 实现方法 CREATE DEFINER=`root`@`%` PROCEDURE `TaskTaxNumber`() BEGIN #Routine body goes here... -- 需要定义接收游标数据的变量 ...
  • 上述存储过程指定了两个输入参数:IP_NUM OID_NUM...这样,我们就构建了50000条数据,如果按上述存储过程,想达到1000W的数据,还是要花点时间的。可以采用如下方法,进一步提高速度:首先创建具有同样表结构的表:C...
  • 存储过程如下(去重): DELIMITER // /*tblname 动态控制表名*/ CREATE PROCEDURE create_imsi(IN tblname varchar(200)) begin declare age int default 1; declare done int(1) default 0; declare v_imsi ...
  • 这个统计过程可以在应用层做好,每分钟插入一次,也可以在数据库层写个存储过程来完成,根据传入数据的时间来判断是更新数据库旧数据还是插入新数据。 同时,这些数据只需要保留一周,更老的数据需要被删除。删除...
  • 需求:批量插入上万条数据,要求created_at(创建时间)为依次递增的数据,其他字段不做限制实现上述需求,可以通过文件的形式或者创建存储过程的方式实现,小编今天就以写一个简单的存储过程来实现该需求:步骤一:表...
  • create or replace procedure Test_BatchAlertInfo(jobId in number ) asCursor useCursor is select u.loginid from basedb_users u where u.jobtitle=jobid ;beginfor tmpid in useCursor loopbegin--dbms_output....
  • 大家好,我最近在用C#访问Oracle数据库 进行数据批量删除的操作,存储过程如下,在调试过程中,程序会自动中断。存储过程:PROCEDURE PRO_LIST_DELETE(IN_LIST_IDS IN NVARCHAR2,OUT_RESULT OUT NUMBER)ASBEGINOUT_...
  • 为了最大程度上发挥Oracle的性能,可以考虑采用存储过程、type组合来实现批量入库。1、创建typeCREATE OR REPLACE TYPE type_object AS OBJECT(ID NUMBER,DAY DATE,STR VARCHAR2(100))CREATE OR REPLACE TY...
  • --修改数据 UPDATE t_as t SET t.str = (SELECT t2.NAME FROM t_as t2 WHERE t2.id = c_id ) WHERE t.id = c_id ; END LOOP cursor_loop ; COMMIT ; CLOSE cur_id; END;// DELIMITER ;
  • -- 一个简单的存储过程,通过拼接sql批量向数据库插入数据 -- 自定义声明结束符 DELIMITER $$ -- row_num要插入数据的行数,cuser当插入数据用户的id create procedure randUser(in row_num int, in cuser varchar...
  • 为了测试需要,需要向数据库中插入一批数据,采用存储过程来做,具体需求如下:时间按一定间隔动态增加,同时更改除了时间之外的某些值drop procedure if exists insertTestData;create procedure insertTestData()...
  • #创建存储过程导入数据 DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `basedatabase`.`teachersinfoproc`(IN s INT) /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL ...
  • 在开发过程中需要测试千万级数据的获取情况,由于不能影响现有业务,没办法,只能自己先造个千万条数据了。 存储过程:简单类比的话,...示例:存储过程插入千万条数据 CREATE OR REPLACE PROCEDURE INSERT_USER_TES
  • PG数据库创建并执行存储过程批量插入数据 记录一下PG数据库创建并执行存储过程批量插入数据的SQL: create or replace function addId() returns boolean AS $BODY$ declare i ... sqlserver存储过程批量插入数据 在...
  • 创建存储过程,执行drop procedure if exists u_head_and_low_pro;delimiter //create procedure u_head_and_low_pro()beginDECLARE n int DEFAULT 0;WHILE n < 1000 DOinsert into activity(data_code, coupon_...
  • mysql存储过程中使用变量批量修改数据BEGINdeclare i int;#查找表的列数declare column_name_temp varchar(100);##查找表的列名DECLARE column_un_change varchar(100);DECLARE table_temp_name varchar(100);...
  • ORACLE创建存储过程批量插入数据 使用到的序列 create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999; 创建存储过程 CREATE OR REPLACE procedure initdata as v_flag NUMBER; begin v_...
  • db2存储过程批量提交

    2020-12-29 21:57:54
    db2存储过程批量提交云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您...
  • 研究sql岂能不需要大量数据,故整理了一份批量数据的笔记。-- 创建表 kk_testCREATE TABLE `kk_test`(`id` INT(11) NOT NULL AUTO_INCREMENT,`randomString` VARCHAR(20) NOT NULL,`randomNumber` INT(11) NOT ...
  • 脚本示例: create or replace procedure pro_batch_insert ( OUT_Return_Code OUT VARCHAR) IS BEGIN for sts in 1 ..... loop insert into inv(ID, CUSTOMERID) values(seq_inv_task.nextval,'AA');...
  • 1.存储过程代码delimiter $$DROP PROCEDURE IF EXISTS create_service_data$$create procedure create_service_data(size INT)beginSTART TRANSACTION;SET @id=0;WHILE @idSET @bid='1000008';SET @serviceId=@id+1;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,841
精华内容 58,336
关键字:

存储过程如何输出批量数据