mysql 变量名称的使用不当的一个错误

php中文网
发布: 2016-06-01 13:15:54
原创
1286人浏览过

     对于开发来说重要的是按照规范进行开发。

     昨天自己在进行开发测试的时候,编写mysql 的一个存储过程 ,代码是比较简单的

     就是根据名称查询对应的数据并返回

DELIMITER //  

CREATE PROCEDURE proc1(name int)  

    BEGIN 

    select * from table_name where name=name; 

    END 

    //  

大家可能注意到了一个变量名称 name 因为我的数据库中的一个字段的名称也是name

按照传统编程语言传递参数的特点查询应该是没有问题的,但是因为是sql ,结果我的查询时显示全部的数据,按照这样的话

mysql 中的解释一样是这样的,在sql 中 因为name=name 永远为真 所以是全部的数据。

CPWEB企业网站管理系统2.2 Beta
CPWEB企业网站管理系统2.2 Beta

CPWEB企业网站管理系统(以下称CPWEB)是一个基于PHP+Mysql架构的企业网站管理系统。CPWEB 采用模块化方式开发,功能强大灵活易于扩展,并且完全开放源代码,面向大中型站点提供重量级企业网站建设解决方案。CPWEB企业网站管理系统 2.2 Beta 测试版本,仅供测试,不建议使用在正式项目中,否则发生任何的后果自负。

CPWEB企业网站管理系统2.2 Beta 0
查看详情 CPWEB企业网站管理系统2.2 Beta

一般在mysql 中用户的变量使用@字符开始。

所以在开发的过程中还是按照规范开发会比较好,会减少很多看似怪异的显现。

 这种情况在oracel 中也是存在的,但是在sql serve 中就不会了,因为sql serve 的用户变量必须使用@ 符号。

附oracle 的测试:

对于oracle 中的sql 测试代码如下:

declare
name VARCHAR2(20);
V_id VARCHAR2(20);
begin
name:='class13';
select id into V_id from firstclass where name=name;
dbms_output.put_line(V_id);
end;

提示的错误如下:

原因与mysql 是类似的。

修改一下名称即可。

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号