在mysql中存储过程

时间:2015-05-24 18:40:23

标签: mysql stored-procedures

我厌倦了:  

delimiter //
DROP PROCEDURE IF EXISTS tlu30khtd_findkhs //
create procedure tlu30khtd_findkhs(in kehoachso varchar(15)) 
begin
    select *from TLU30KeHoachTuyenDung where KeHoachSo = kehoachso;
end; //
delimiter; 

当我用以下方式调用程序时:

call tlu30khtd_findkhs('KH0001')

但结果不使用

where KeHoachSo = kehoachso
它显示
select *from TLU30KeHoachTuyenDung

的结果

1 个答案:

答案 0 :(得分:0)

问题是您的参数名称与列相同。这意味着您的where子句不会看到参数,只会看到列名。

解决方案是为参数添加前缀。我倾向于使用p_v_

delimiter //
DROP PROCEDURE IF EXISTS tlu30khtd_findkhs //
create procedure tlu30khtd_findkhs(in p_kehoachso varchar(15)) 
begin
    select t.*
    from TLU30KeHoachTuyenDung t
    where t.KeHoachSo = p_kehoachso;
end; //
delimiter;