【发布时间】:2013-11-15 21:47:11
【问题描述】:
我的 sql 动态代码遇到了很多麻烦:
DELIMITER $$
CREATE DEFINER=`remotecontroller`@`%` PROCEDURE `check_pwd`(IN pwd VARCHAR(20),
IN user VARCHAR(20), IN tab VARCHAR(30), IN pwd_f varchar(30), IN id_f varchar(30),
OUT result Bit(1))
READS SQL DATA
BEGIN
set @u_pwd= null;
set @txt= concat("select pwd_f from ",tab," where id_f = upper(user) into @u_pwd");
prepare exec from @txt;
execute exec;
-- IN previous version the table and column names was preselected: select pwd_f from clinic.np where id_f like upper(user) into u_pwd;
If Password(pwd) = @u_pwd then set result= 1;
else set result= 0;
end if;
END
代码的目标是将一个密码与表中的另一个密码进行检查并返回布尔值。用于测试项目,我知道我需要更改密码插件,但我会在最终项目中这样做
当我执行代码时抛出一个错误 1064,sql 语法错误。有谁能够帮我?我尝试了很多东西,谢谢大家!
编辑 - 现在,使用相同的代码会引发错误 1054:field_list 中的未知列 pwd_f;
【问题讨论】:
-
表名,之前我把使用模式排除在程序之外
-
好吧,出现 1054 错误,我再次检查(再次)我是否在调用者中写错了列字段的名称,但不是,这是正确的,我不明白为什么会发生这种情况。
-
好的,让我重新措辞。您在变量选项卡中发送什么值?
-
表“学生”的名称,之前我执行“使用学校”