MySql创建存储过程(procedure)

2023-11-18

    如果存储过程中含有动态SQL语句,在触发器中调用该存储过程时会报错ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger。

    该错误的含义是:函数或者触发器不支持动态SQL语句。下面详细介绍这个错误的重现过程,并提出解决方案。

1.建表

   建立人员信息表,包含id和name两列。

CREATE TABLE person (
  id  int, 
  name varchar(20)
);

2.建存储过程

    表名作为参数传入,创建一张新表,作为person表的日志。

DELIMITER $$
CREATE  PROCEDURE personLog(IN table_name VARCHAR(20))
BEGIN
    SET @name = table_name;
    SET @str = CONCAT('create table ', @name,'(id int, name varchar(20))');
    PREPARE stmt FROM @str;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;

3.建触发器

   当person表中插入数据时,调用存储过程。

DELIMITER $$
 CREATE  TRIGGER person_trigger after insert on person FOR EACH ROW
 BEGIN
 call personLog(new.name);
 END $$
DELIMITER ;

4.插入数据

 insert into person VALUES(1,'April') ;

   插入数据时,触发器自动启动并调用存储过程,此时报错:ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger,即函数或者触发器不支持动态SQL语句。

    为了避免该问题,我们可以采用直接调用存储过程的方法。

mysql>call personLog("April");

 

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

MySql创建存储过程(procedure) 的相关文章

  • 数据库系统教程(第二版何玉洁)课后数据库上机实验答案

    附录C 上机实验 C 1 第4章上机实验 陈宇超 仅供参考 下列实验均使用SQL Server 的SSMS工具实现 1 用图形化方法创建符合如下条件的数据库 创建数据库的方法可参见本书附录A l 数据库名为 学生数据库 l 主要数据文件的逻
  • CMOS到触发器(一)

    1 MOS晶体管结构与工作原理简述 我们或多或少知道 晶体管在数字电路中的主要作用就是一个电子开关 通过电压或者电流 控制这个 开关 开还是关 晶体管大概有两种分类 一种是双极性晶体管 BJT bipolar junction transi
  • 13.s日志查询

    mysql慢查询 慢查询日志是MySQL提供的一种日志记录 它用来记录在MySQL中相应时间超过时间阈值的语句 具体指运行时间超过long query time值的SQL 则会被记录到慢查询日志中 具体指运行时间超过long query t
  • 存储过程

    好久没用过存储过程了 今天整理一下 一 定义 存储过程是一组为了完成特定功能的SQL语句的集合 它经编译后存储在数据库中 用户通过指定的调用方法执行之 存储过程具有名称 参数及返回值 并且可以嵌套调用 存储过程是经过编译的 以可执行格式永久
  • MySQL——MySQL的基础操作部分

    使用命令行登录 mysql u root p 直接敲击回车后输入密码即可 当看到出现 mysql gt 的符号之后 就表示已经进入到了 系统中 就可以输入 的命令对数据库进行操作了 查看数据库 使用命令查看所有的数据库 注意在使用MySQL
  • mysql 存储过程编写中踩的坑-----工作项目实战一

    如要转载请注明 https blog csdn net qwert789p article details 103627980 创作不易 且行且珍惜 1 项目前提 由于计费系统先上线 CRM项目后上线 前期计费系统有的建立客户账户 商品以及
  • Cursor

    Mac安装使用Mysql教程 从零开始 第一章 Mac安装MySQL 1 1 过程记录 1 2 参考 第二章 安装数据库管理软件DBeaver 2 1 过程记录 2 2 参考 第三章 DBeaver创建MySQL数据库 3 1 过程记录 3
  • mysql优化(1)show命令 慢查询日志 explain profiling

    原文地址 http zhumeng8337797 blog 163 com blog static 1007689142012095142876 suggestedreading wumii 目录 一 优化概述 二 查询与索引优化分析 1性
  • 网络安全入门学习第五课——MySQL运算函数集合

    文章目录 前言 一 COUNT 二 SUM 三 AVG 四 MAX 五 MIN 前言 MySQL中包括COUNT SUM AVG MAX 和MIN 当需要对表中的记录求和 求平均值 查询最大值和查询最小值等操作时 可以使用集合函数 GROU
  • 数字逻辑触发器(一)

    触发器 一 定义 是一种具有记忆功能的逻辑部件 具有两个稳定的输出状态 用这两个稳定的状态来表示二值信号的0和1 在外界输入信号的激励下 触发器的输出状态会发生改变 二 触发器的种类举例 基本RS触发器 主从触发器 维持阻塞触发器 D触发器
  • Zabbix监控httpd服务

    Zabbix监控httpd服务 一 工作要求及目的 二 WEB配置步骤 1 进入监控主机列表 2 链接模板 3 查看自定义HTTP端口监控项 4 查看自定义的触发器 三 客户端测试http服务停止报警 1 停止服务 2 查看web端报警 3
  • 2021-08-02

    触发器 查询 删除 修改 一 什么是触发器 触发器 trigger 是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法 它是与表事件相关的特殊的存储过程 它的执行不是由程序调用 也不是手工启动 而是由事件来触发 二
  • Mysql 多表关联查询

    文章目录 1 Mysql中表之间的关系 1 1 多表关系 1 2 外键约束 2 多表联合查询 2 1 交叉连接查询 笛卡尔积 2 2 内连接查询 inner join 2 3 外连接查询 2 3 1 左连接 2 3 2 右连接 2 3 4
  • MySQL——数据类型以及对表结构的修改

    MySQL的数据类型 刚才我们在创建表的时候 说到了一个字段类型 所谓的字段类型就是这个字段能存放的数据的数据类型 在MySQL中有以下几种数据类型 数据类型 大小 字节 用途 格式 INT 4 整数 FLOAT 4 单精度浮点类型 DOU
  • 如何通过node js执行存储过程

    我正在使用 db oracle 模块 node js 来查询表 SEARCH 命令 我能够成功获取记录 我需要执行存储过程 知道如何从 Node js 代码执行 Oracle 存储过程吗 我可以通过 db oracle 模块执行吗 或者有其
  • mysql 根据原始 sql 创建过程的问题

    我正在 Symfony2 中处理一个应用程序项目 通过注册 每个客户端都会创建一个数据库 模式是在客户端登录时由验证服务创建的 该应用程序需要一些数据才能工作 到目前为止 我使用了 ORM 夹具 由于多种原因 我现在需要从夹具加载转向更接近
  • MySQL WHERE 过程中的条件被忽略

    我正在尝试制定一个带有参数的程序 但是当我在一个WHERE情况就好像从未存在过一样 他们只是被忽视了 DELIMITER DROP PROCEDURE IF EXISTS p CREATE PROCEDURE p IN player TEX
  • 简单的任务:连接到数据库,执行存储过程,断开连接

    我不一定需要从 VBScript 向存储过程传递任何变量 我只需要在服务器上运行存储过程 我还没有找到任何明确的示例来说明如何执行此操作 只有很多人解释如何将变量从 SP 传递回 VBScript 任何帮助将不胜感激 看起来我必须打开一个连
  • 使用通过参数传递的偏移量计算过程内部数组的长度,汇编语言 x8086

    所以我试图通过使用参数中的偏移量来获取数组的长度 但它只返回 lenhof 偏移量 我有什么办法可以做到这一点吗 INCLUDE Irvine32 inc multiply proto arr ptr dword data array dw
  • 如何从命令行调用带参数的 mysql 存储过程?

    如何从命令行调用存储过程 我有一个程序 CREATE DEFINER root localhost PROCEDURE insertEvent IN dateTimeIN DATETIME NO SQL BEGIN SET eventIDO

随机推荐

  • lol服务器位置峡谷之巅,lol峡谷之巅

    英雄联盟峡谷之巅第六赛季的奖励正式的公布了 这次只要排位赛胜场最多的2000名玩家就可以领取到奥术师佐伊至臻的皮肤 很多玩家还不清楚在哪领取峡谷之巅第六赛季的奖励 下面就来为大家分享一下地址 英雄联盟的官方在7月6日的下午5点发布了最新的峡
  • QT入门Buttons之QCheckBox

    目录 一 界面布局介绍 1 布局器中的位置及使用 2 常用属性 二 属性功能介绍 1 常用信号 2 测试信号stateChanged int 3 组合框效果 三 Demo展示 此文为作者原创 转载标明出处 一 界面布局介绍 1 布局器中的位
  • 从一个对象数组中的某一个属性组成新数组,然后比较大小

    需求 从一个对象数组中的某一个属性组成新数组 然后比较大小 示例数组 原始数组 expmArr name zhangsan age 18 name lisi age 20 name wangwu age 17 name zhaoliu ag
  • 编码与调制

    一 信道 信道是信号的传输媒介 一般用来表示向某一个方向传送信息的介质 因此一条通信线路往往包含一条发送信道和一条接收信道 信道根据传输信号分为数字信道 传输数字信号 和模拟信道 传输模拟信号 根据传输介质可分为无线信道和有线信道 同时根据
  • Qt 图片适应QLabel控件大小(饱满缩放和按比例缩放)

    直接上代码 QImage Image Image load d test jpg QPixmap pixmap QPixmap fromImage Image int with ui gt labPic gt width int heigh
  • 【计算机毕业设计】基于微信小程序的流浪动物救助系统 动物领养系统

    毕设帮助 源码交流 技术解答 见文末 一 前言 目前对流浪动物的救助采用的方式非常有限 一般是通过微信群 论坛 贴吧等平台发布流浪动物信息 由其它用户参与救助 这种方式由于没有监控渠道 造成有很多骗子的出现 而且这种方式的宣传力度也不够 经
  • 服务器管理口IP及账号密码(知识汇总)

    HP管理口 ILO 默认用户 密码 Administrator password HP以前管理口登陆MP卡 通过网线连接MP卡的RJ 45口 通过telnet方式登录 默认用户 密码 Admin Admin DELL服务器管理口 idac
  • 生产级logback-spring.xml配置明细

  • win32平台中的程序转换为wince中的一些错误 . 未能为“VCCLCompilerTool”工具生成命令行

    转载自 http blog csdn net shirui1125 article details 6095774 gt ToolBox error PRJ0004 未能为 VCCLCompilerTool 工具生成命令行 从原有的平台复制
  • 第一个nodejs应用

    应用这个词很火 哪里都在用 这里的nodejs应用其实是一个站点 准确的说是运行在本地的一个小小的Http站点 但是nodejs开发主要还是集中在少数的几个核心功能上 而不是那种动辄几千几万个文件 支撑多少并发多少功能的这种大型站点 所以n
  • jmeter接口关联-跨线程和正则表达式提取headers信息(视频详解)

    首先 看下常见的jmeter工作中的3个问题 1 如何提取响应头里面的cookie 2 参数md5加密后 再请求接口 3 多个线程组之间参数如何关联 技术知识 jmeter 跨线程关联 1 提取器 正则表达式 2 md5加密函数 3 Bea
  • 量化分析小函数——上穿函数

    量化分析小函数 上穿函数 上穿函数用于判断上穿信号的有无 输入为两条信号 obj和ref 两者数据类型为python列表 主要判断obj是否上穿ref 1 参考代码 import talib as tl import pandas as p
  • 短文简单理解遗传算法和代码审计应用思路

    短文简单理解遗传算法和代码审计应用思路 如何理解遗传算法 假设小明爷爷DNA之中带有A字段 小明爸也有 小明也有 说明A字段会遗传 如果A是存在危险函数 这就是遗传 同样的在代码之中多数存在包含关系 也称为调用 所以危险函数是可以被 遗传
  • 深度学习——图像增强 小组代码

    TJU暑期的深度学习训练营 这是人脸识别运用图像增强后的一段代码 import os shutil unzip tjudataset zip base dir tjudataset read data train dir os path j
  • vuecli打包时去掉console.log

    1 安装babel plugin transform remove console插件 npm i save dev babel plugin transform remove console 2 在babel config js中配置 c
  • Centos7 MySQL8 主从同步提示:Fatal error: The slave I/O thread stops because master and slave have equal

    报错信息 在搭建Mysql主从架构过程中 由于从服务器是克隆的主服务器系统 导致主从Mysql uuid相同 Slave IO无法启动 报错如下 Last IO Error Fatal error The slave I O thread
  • JavaScript中的关键字“VAR”使用详解

    JavaScript的变量也是有作用域的 只是它非常的笼统 就分为全局变量和函数变量 作为全局变量的时候 有没有var 都没有关系 但是 在function中 有var就表示是局部变量 没有var就表示是全局变量 JScript的语法教程里
  • Window10 安装Linux子系统

    为Window10 安装Linux子系统 WSL是win10 的Linux的子系统 相比虚拟机有更多的优势 对系统资源占用少 切换系统之间较为的方便 安装步骤 安装WSL要求Win10系统在1607版本以上 查看自己的版本是否符合要求 开启
  • charles 抓取微信pc客户端小程序https traffics

    preface 今天看了下 pc端小程序的ui 展示 有一丢丢bug 以后肯定会更好的 最近微信 更新了 pc 客户端 小程序是可以直接在 pc 端 查看的 这一个功能真是太棒了 我们可以不连手机 直接在 电脑上进行 某些 抓包 测试了 1
  • MySql创建存储过程(procedure)

    如果存储过程中含有动态SQL语句 在触发器中调用该存储过程时会报错ERROR 1336 0A000 Dynamic SQL is not allowed in stored function or trigger 该错误的含义是 函数或者触