mysql存储过程参数与属性同名问题_存储过程中参数与表名相同的二义性问题
写了一个很简单的存储过程,发现执行了,但是表的数据没有改变,存储过程如下:
procedure sp_upd_update_jsgl(mc in varchar2,--名称
sm in varchar2--说明
)
is
begin
update jsgl set sm=sm where mc =mc ;
end
where后面的名称执行的时候mc=mc并不是jsgl.mc=mc 而是和1=1一样的参数,而参数mc和jsgl.mc产生了二义性,所以后面的参数修改成了jsgl.mc=mc
这个存储过程就变成了这样
procedure sp_upd_update_jsgl(mc in varchar2,--名称
sm in varchar2--说明
)
is
begin
update jsgl set sm=sm where jsgl.mc =mc ;
end ;
但是这里的sm这个字段并没有改变 ,存储过程却是执行完成了,但是考虑到set后面的语句前面是表名,后面是参数,应该不会存在问题的。其实这里还是一样有问题,只是这个条件等同于jsgl.sm=jsgl.sm,这样update执行成功了,但是值却没有被修改。
也就是说我们写的第一个存储过程是等于下面的一条语句
procedure sp_upd_update_jsgl(t_mc in varchar2,--名称
t_sm in varchar2--说明
)
is
begin
update jsgl set jsgl.sm=jsgl.sm where t_mc =t_mc ;
end ;
这样的语句是成功了,但是值修改的时候还是原来的值而且这个update等同于 update jsgl set jsgl.sm=jsgl.sm where 1=1是一样的 where 根本没有起作用
所以要切记切记,存储工程参数名一定不要和表名相同
mysql存储过程参数与属性同名问题_存储过程中参数与表名相同的二义性问题相关推荐
- mysql中如何根据表名找到库名
mysql中如何根据表名找到库名: SELECT table_schema FROM information_schema.TABLES WHERE table_name = '表名'; 添加字段: ...
- mysql存储过程判断多个条件语句_存储过程里多条件判断(SQL组合查询)
我存储过程里想实现多个传入参数的判断,里面有7个传入参数条件. CREATE PROCEDURE sp_tbWasteSource_Search ( @sd datetime, ...
- mysql项目酒店管理博客园_项目中常用的19条MySQL优化
在写文章之前,首先感谢 飞友科技 陆老师提供的文档.. 声明一下:下面的优化方案都是基于 " Mysql-索引-BTree类型 " 的 一.EXPLAIN 做MySQL优化,我们要 ...
- mysql inserted表_触发器中的inserted表和deleted表
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft? SQL Server 2000 自动创建和管理这些表.可以使用这两个临时的驻留内存的表测试某些数据修改 ...
- mysql表的组成_数据库中的数据表由什么组成?
在数据库中,数据表是由表名.表中的字段和表的记录三个部分组成的.在建立表之前都必须先设计它的结构,表结构描述了一个表的框架.设计表结构实际上就是定义组成一个表的字段个数,每个字段的名称.数据类型和长度 ...
- mysql 动态创建事件_mysql 通过事件定时为数据库创建动态表名
#检测事件是否开启 show variables like 'event_scheduler'; #开启事件(最好在my.init设置,因为重启后还会变回默认值OFF) set global even ...
- mysql查询到最新记录就停止_使用Limit参数优化MySQL查询 在找到一个记录后将停止查询...
优化 MySQL 查询的 Limit 参数 我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么在 MySQL 中有那些方式是可 ...
- mysql 当前记录集不支持书签_存储过程 分页。当前记录集不支持书签。这可能是提供程序或选定的游标类型的限制。...
ifsession("user")="A0331A2"then'试验存储过程response.Write("存储过程")DIMMyComm, ...
- java 初始化系统参数_系统中参数的初始化 参数在系统中配置
1.我们来看这个需求,例如:我们上传图片.上传附件 需要放在服务器上的一个目录上,该目录在不同的操作系统下是不同的.因为我们在写java代码的时候就不能写死. 这个时候我们就要用到系统参数.在界面上自 ...
最新文章
- ClickHouse系列教程
- xmlrcp学习 - python中使用xmlrpc
- ionic react-native和native开发移动app到底那个好
- 两道统计题(两次检测呈阳性,连续抛硬币)
- 24、Cocos2dx 3.0游戏开发找小三之网格动作:高炫酷的3D动作
- Failed to connect to driver at XXXXXXx
- 深度相机 物体三维重建_基于深度相机进行室内完整场景三维重建的方法及系统_2017100513665_说明书_专利查询_专利网_钻瓜专利网...
- 天体运行动图,如此美妙,如此震撼!
- 北大出版社继续送书 | 附上周4位中奖的朋友信息
- Objective-C基础语法快速入门
- python 字符串分割_python拆分字符串到列表
- 手写实现bpnn神经网络
- [资源]C++书籍之 C++ Primer Plus (第6版)中文版
- 2021年低压电工复审考试及低压电工模拟考试
- 系统垃圾清理bat文件
- struts教程笔记5
- 学java,报班还是自学?
- 怎样把jpg格式转换成pdf
- windows远程命令执行
- 计算机考研代码854,哈工大计算机考研考纲854计算机基础
热门文章
- 论文浅尝 | 基于复杂查询图编码的知识库问答
- Android官方开发文档Training系列课程中文版:手势处理之多点触控处理
- 数学家、中科院院士张景中:数学实力影响国家实力是近代以来的共识
- SpringBoot:如何处理SprintBoot提示Whitelabel Error Page以及了解原因?
- formSelects-v4.js 基于Layui的多选解决方案
- 第九集 生死穿越风火山,感受尘世间轮回
- 用samba来创建windows下的文件共享
- (六)Spark-Eclipse开发环境WordCount-JavaPython版Spark
- 让引擎不再是你的唯一,对百度再见
- 关于线程池ThreadPoolExecutor使用总结