我厌倦了:
 分隔符//
如果存在则删除程序tlu30khtd_findkhs //
创建过程tlu30khtd_findkhs(在kehoachso varchar(15)中)
开始
    从* TLU30KeHoachTuyenDung中选择*其中KeHoachSo = kehoachso;
结束; //
定界符

当我使用以下命令调用过程时:调用tlu30khtd_findkhs('KH0001')

但结果不要使用KeHoachSo = kehoachso
它显示选择* 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;

07-24 20:04