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

昨天自己在进行开发测试的时候,编写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 变量名称的使用不当的一个错误-LMLPHP

原因与mysql 是类似的。

修改一下名称即可。

09-08 09:22