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

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

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

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

DELIMITER //

CREATE PROCEDURE proc1(name int)

BEGIN

select
* from table_name where name=name;

END

//

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

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

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

一般在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
是类似的。

修改一下名称即可。

时间: 2024-12-16 09:35:18

mysql 变量名称的使用不当的一个错误的相关文章

Mysql变量一览

Server System Variables(系统变量) MySQL系统变量(system variables)是指MySQL实例的各种系统变量,实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等,这些变量包含MySQL编译时的参数默认值,或者my.cnf配置文件里配置的参数值.默认情况下系统变量都是小写字母. 作用域范围 系统变量(system variables)按作用域范围可以分为会话级别系统变量和全局级别系统变量.如果要确认系统变量是全局级别还是会话级别,如

thinkphp3.2.2 变量名称,引入类库和实例化

一些常量,例如模块名.控制器名.操作名等等,请查看 手册  附录-常量参考 需要引入的类库位置在:ThinkPHP\Library\Org\Util\的位置,该类库首先需要声明命名空间 namespace Org\Util; 然后在控制器的操作中引入使用的时候第一步是实例化,不再需要import导入 比如是导入的类为Page.class.php,在操作中的代码为: $p = new \Org\Util\Page($count, $listRows); 括号里面的是两个参数 生成链接的快捷方法 :

R语言:变量名称和字符串的转换

R语言:变量名称和字符串的转换 2014-06-23 14:45:27 在R语言中,经常会遇到变量名称和字符串相互转换的问题.比如说,进行1000次循环运算,并将运算结果存储在1000个变量中,如x_1, x_2, ... , x_1000.这时候可以使用assign()函数,示例如下: > a错误: 找不到对象'a'> assign('a', 1)> a[1] 1 上面的例子将字符'a'转变为变量a,并将其赋值为1 . 相反,如果我们想遍历一个变量序列,并对其中的每一个变量都进行操作,

mysql变量使用总结

set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的.但是,对比的书中的答案,发现这样的方式太蹩脚了.说明没有很好地理解select定义变量的本质.在select中,发现有一个用户变量,如果没有定义,那么就会初始化.select子句原来的

Mysql 变量讲解

set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的.但是,对比的书中的答案,发现这样的方式太蹩脚了.说明没有很好地理解select定义变量的本质.在select中,发现有一个用户变量,如果没有定义,那么就会初始化.select子句原来的

jmeter调用时如何改变已定的变量名称

在jmeter文件调用的时候,遇到一个问题,被调用的文件(称为basic文件吧)里面定的变量名称是code,在调用basic文件时,要先在数据库中查出code,再做为参数传入,数据库查询后,变量调用时就要使用${code_1},这样与basic里定义的名称就不同了,该如何解决这个问题呢? 以下举例说明: basic文件: 调用basic文件: 简单吧,这种情况适用于basic文件不可更改的情况,例如basic已经被其他很多文件调用了,改了名称会导致其他文件出错.如果可以改basic文件的话,直接

mysql变量使用总结(转)

set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: select @VAR:=(select sum(amount) from penalties); 我这样改,虽然是可以的.但是,对比的书中的答案,发现这样的方式太蹩脚了.说明没有很好地理解select定义变量的本质.在select中,发现有一个用户变量,如果没有定义,那么就会初始化.select子句原来的

【冷门】 C# 小技巧之获取变量名称

今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在找寻这种方式,很不容易找到一个解决方案来自http://www.th7.cn/Program/net/201404/187358.shtml 下面就是今天找到的进行详细解答 首先需要自定义一个静态方法 /// <summary> /// 扩展 获取变量名称(字符串) /// </summary> /// <param name="var_name"></pa

SQL-GROUP BY语句在MySQL中的一个错误使用被兼容的情况

首先创建数据库hncu,建立stud表格. 添加数据: create table stud( sno varchar(30) not null primary key, sname varchar(30) not null, age int, saddress varchar(30) ); INSERT INTO stud VALUES('1001','Tom',22,'湖南益阳'); INSERT INTO stud VALUES('1002','Jack',23,'益阳'); INSERT