mysql 中的存储过程

store procedure in mysql

我厌倦了:

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

的结果

问题是您的参数名称与列相同。这意味着您的 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;