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;
我厌倦了:
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;