Mysql存储过程(批量处理)如何编写

2023-11-03

1、什么事存储过程

    存储过程是一组为了完成特定功能的SQL语句集合。一个存储过程是一个可编程的函数,它在数据库中创建并保存,一般由SQL语句和一些特殊的控制结构组成。使用存储过程不仅可以提高数据库的访问效率,同时也可以提高数据库使用的安全性。

2、基本语法结构

delimiter $$;-- 声明结束符,因为存储过程中“;”不代表结束的意思,

你也可以自己定义其他为结束符,如:delimiter //;这样“//”就是结束符了。
CREATE PROCEDURE si0001.initData()
BEGIN -- 开始
        -- sql逻辑;
END; -- 结束
$$; -- 最后的结束符 必须带着

注意:每行末尾都要有“;”;

3、游标

 DECLARE per CURSOR FOR select xm from si0001.person ;-- 定义游标

4、查询结果复制给参数

DECLARE counts int DEFAULT 0;-- 定义参数

select count(id) into counts from si0001.person;-- 结果复制给参数

5、参数初始化

set countindex = 1;

6、示例 插入指定行数的数据

DROP PROCEDURE IF EXISTS test_p;-- 如果存在先删除

delimiter $$;
create procedure test_p(count int)
begin
declare id int (20);
declare i int;
set i = 0;
while i<count do
select nextval('id') INTO id;-- 生成随id
 insert into test.person 
           (id, xm,,bz) 
         values 
           (id, '测试','测试') ;  -- sql插入语句

set i=i+1;
end while;
end;
$$; 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql存储过程(批量处理)如何编写 的相关文章

  • 如何在具有动态列的表中插入值 Jdbc/Mysql

    我想在具有动态列的表中添加值 我设法创建一个包含动态列的表 但我不知道如何插入数据 Create Table sql CREATE TABLE MyDB myTable level INTEGER 255 int columnNumber
  • OVER ORDER BY 中的多个列

    有没有办法在 OVER ORDER BY 子句中指定多个列 SELECT ROW NUMBER OVER ORDER BY A Col1 AS ID FROM MyTable A 上面的方法工作正常 但尝试添加第二列不起作用 SELECT
  • 尝试在本地主机上测试我的 php 文件,但只出现一个空白页面,没有错误消息

    我正在运行 Apache 和 mySQL 因为我检查了所有日志 似乎没有任何错误 我的目标是每当有新的表单条目时就向特定地址发送电子邮件 我对后端和 PHP 缺乏经验 所以我不太确定哪里出了问题 任何帮助将不胜感激
  • SQL:两个没有完整列匹配的表的并集

    我有一个table A其中有一组列A1 A2和一个具有一组列的 table bB1 B2 碰巧的是A2 B1但其余列不匹配 也不应该匹配 我想附加表格 所以我使用UNION ALL 对于不匹配的列 我使用null as COLUMN NAM
  • sql查询连接两个服务器中不同数据库的两个表

    我在 ServerS 上的数据库中有两个表 tableA 在 ServerB 上的数据库中有两个表 我只想根据这些表的公共字段名对这些表执行 fullouter join 在 SQL Server 中 您可以创建一个链接服务器 在 Mana
  • oracle日期序列?

    我有一个 oracle 数据库 我需要一个包含 2 年所有日期的表 例如来自01 01 2011 to 01 01 2013 首先我想到了一个序列 但显然唯一支持的类型是数字 所以现在我正在寻找一种有效的方法来做到这一点 欢呼骗局 如果您想
  • 使用 PHP 查询更改表,列名未显示在 phpMyAdmin 中

    这是我的第一篇文章 这里有一篇类似的文章 phpMyAdmin 不显示添加的列 代码日志 https stackoverflow com questions 12960302 phpmyadmin doesnt show added col
  • 游标与更新

    一家公司使用 SQL Server 数据库来存储有关其客户及其业务交易的信息 您所在的城市引入了新的区号 对于前缀小于 500 的电话号码 区号 111 保持不变 前缀为 500 及以上的号码将分配区号 222 客户表中电话列中的所有电话号
  • 将数组文字传递给 PostgreSQL 函数

    我有一个包含 select 语句的 Postgres 函数 我需要使用包含字符串值数组的传入变量添加条件 CREATE OR REPLACE FUNCTION get questions vcode text RETURN return v
  • Camel Sql 大型数据集的消费者性能

    我正在尝试在 Ignite 缓存中缓存一些静态数据 以便更快地查询 因此我需要从 DataBase 读取数据 以便将它们插入到缓存集群中 但是行数约为 300 万 通常会导致 OutOfMemory 错误 因为 SqlComponent 试
  • BULK INSERT 中格式附近的语法不正确?

    我试图找出为什么我使用的 BULK INSERT 命令无法识别命令中使用的 FORMAT 和 FIELDQUOTE 选项 BULK INSERT dbo tblM2016 RAW Current Import File FROM x tms
  • 数据包无序。得到:80 预期:0 node.js

    这是我的 非常简单 代码 var connection mysql createConnection infosDB connection connect connection query SELECT FROM action functi
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • Java:使用PreparedStatement将多行插入MySQL

    我想使用 Java 一次将多行插入 MySQL 表中 行数是动态的 过去我在做 for String element array myStatement setString 1 element 0 myStatement setString
  • 比较 PHP 中的 unix 时间戳 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在 PHP 中我有 diff abs
  • InnoDB 或 MyISAM - 为什么不两者都使用呢?

    我读过各种关于两者之间哪个更好的主题InnoDB and MyISAM 看来争论的都是使用还是其他 根据表的不同 是否不能同时使用两者 这样做会有什么缺点 据我所知 发动机可以在CREATE TABLE命令 因此 某些经常读取的表可以设置为
  • MySQL:用户对数据库的访问被拒绝

    我正在尝试在 Heroku 上的远程 SQL 服务器上创建一个数据库 clearDB 我与此联系 mysql host lt
  • SQL DML:日期值不正确 (MySQL)

    我在数据库中创建了一个表 CREATE TABLE official receipt student no INT UNSIGNED academic year CHAR 8 trimester ENUM 1 2 3 or no MEDIU
  • SQL Not Empty 代替 Not NULL

    我正在使用 postgreSQL 我有一个专栏 NOT NULL 但是 当我想插入带有空字符串的行时 如下所示 它不会给我错误并接受 我如何检查插入值应该是not empty 既不为空也不为空 PS 我的专栏定义为 ads characte
  • 自定义 php 论坛 - 显示新的/未读的帖子

    我自己使用 php 编写了一个自定义论坛脚本 我决定不使用 phpbb 和其他工具 因为我希望我所做的事情具有 100 的灵活性 不过我遇到了一个问题 如何向用户显示帖子是否是新的 未读的 我想到了两种解决方案 1 饼干 2 数据库 我不想

随机推荐