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) 的相关文章

  • mysql trigger 使用以及与 sqlite3 trigger 比较

    一 触发事件的表与触发更新的表使用同一个表 使用情景 xff0c 表里的某行数据发生update时自动更新修改时间 updated sqlite3 3 40 0 MariaDB 10 10 2 对应 MySQL 8 1 sqlite3 up
  • MySQL存储过程创建例子

    1 无参数输入的存储过程 DELIMITER DROP PROCEDURE IF EXISTS testUser CREATE PROCEDURE testUser BEGIN SELECT FROM user WHERE name zz
  • 创建oracle的sequence 和 trigger

    Create sequence NOMAXvalue create sequence SEQ ADMIN ID minvalue 1 maxvalue 99999999 NOMAXvalue start with 1 increment b
  • MySQL复习笔记-一条SQL更新语句是如何执行的?

    前面我们系统了解了一个查询语句的执行流程 并介绍了执行过程中涉及的处理模块 相信你还记得 一条查询语句的执行过程一般是经过连接器 分析器 优化器 执行器等功能模块 最后到达存储引擎 那么 一条更新语句的执行流程又是怎样的呢 之前你可能经常听
  • sqlserver数据库触发器,对当前的表数据插入时,根据条件防止数据重复插入。

    这是一个之前做项目用的 以下是触发器sql语句 直接执行即可 如果需求不一样需要修改对应的语句就行 USE NetCoreWebApi GO Object Trigger dbo testInsertTrigger Script Date
  • Mysql存储过程(批量处理)如何编写

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

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

    Mac安装使用Mysql教程 从零开始 第一章 Mac安装MySQL 1 1 过程记录 1 2 参考 第二章 安装数据库管理软件DBeaver 2 1 过程记录 2 2 参考 第三章 DBeaver创建MySQL数据库 3 1 过程记录 3
  • mysql基础,快来复习一波!

    mysql基础 快来复习一波 一 数据库服务的启动与登录 1 1 通过服务的方式启动 1 2 手动启动的方式 1 3 控制台连接数据库 1 3 1 登录格式1 u和p后面没有空格 1 3 2登录格式2 1 3 3 登录格式3 1 3 4退出
  • 数字逻辑触发器(一)

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

    感觉非常有用 就记录下来 希望看到的你有帮助 函数 清理默认值 create FUNCTION dbo fnCleanDefaultValue sDefaultValue varchar 4000 RETURNS varchar 4000
  • Zabbix监控httpd服务

    Zabbix监控httpd服务 一 工作要求及目的 二 WEB配置步骤 1 进入监控主机列表 2 链接模板 3 查看自定义HTTP端口监控项 4 查看自定义的触发器 三 客户端测试http服务停止报警 1 停止服务 2 查看web端报警 3
  • 【Postgresql】触发器某个字段更新时执行,行插入或更新执行

    Postgresql 触发器某个字段更新时执行 行插入或更新执行 1 postgresql触发器 2 触发器的创建及示例 1 字段更新时 触发 2 行插入或更新时 触发 3 触发器的删除 4 触发器的坑 参考 1 postgresql触发器
  • MySql创建存储过程(procedure)

    如果存储过程中含有动态SQL语句 在触发器中调用该存储过程时会报错ERROR 1336 0A000 Dynamic SQL is not allowed in stored function or trigger 该错误的含义是 函数或者触
  • mongodb是否具有关系型数据库中的trigger、procedure等属性?

    正如标题所示 包括 Map Reduce 框架 如果我想在插入记录之前触发一个事件来运行一致性检查或安全操作 我该如何使用 MongoDB 来做到这一点 MongoDB 不支持触 发器 但人们已经围绕它们创建了解决方案 主要使用 oplog
  • 程序生成 3000 个正方形

    我需要构建一个包含 3000 个正方形的小部件 手动执行此操作会花费很长时间 也许你们中的一些人知道生成 square 类 3000 次的最简单方法 我还需要能够改变每个方块的内容 例如颜色 标题等 谢谢朋友 div class squar
  • 如何在 MySQL 中调用过程?

    我已经开始检查 MySQL 中的过程 但我所有的努力都不起作用 这是我的程序创建 DELIMITER CREATE PROCEDURE test IN a INT BEGIN SELECT FROM table WHERE id a END
  • 努力使用spring SimpleJdbcCall调用Oracle函数

    我正在努力使用下面的代码来使其工作 搜索文档和论坛并陷入困境 最后我决定向你寻求帮助 我拥有的是带有类型 函数声明和函数体声明的包 将来我想使用 SYNONYM 到 MYPACKAGE 这只是模拟 我的数据库中不会有包和类型声明 但使用 d
  • 如何从命令行调用带参数的 mysql 存储过程?

    如何从命令行调用存储过程 我有一个程序 CREATE DEFINER root localhost PROCEDURE insertEvent IN dateTimeIN DATETIME NO SQL BEGIN SET eventIDO
  • SQL Proc 从 varchar 到 int 的“转换失败”。为什么要转换?

    我的问题是 为什么它从 varchar 转换为 int 我不确定它想做什么 CREATE PROCEDURE myTestProcedure TransId VARCHAR 15 AS BEGIN DECLARE Result VARCHA

随机推荐

  • 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 该错误的含义是 函数或者触