我正在使用存储过程。
create procedure uspCommonMasterInsertUpdateSingleItem
(
p_id int,
p_name varchar(50),
p_head int,
p_desc varchar(500),
p_ct_nm varchar(50)
)
begin
declare p_returnvalue int;
declare p_ct_cd int ;
set p_ct_cd = (select ct_cd from com_typ where ct_nm = p_ct_nm);
if (p_id is null) then
insert into com_mst(
ct_cd,
cm_nm,
cm_hed,
cm_dsg
)
values
(
p_ct_cd,
p_name,
p_head,
p_desc
) ;
select p_returnvalue = LAST_INSERT_ID();
else
update com_mst set
ct_cd=p_ct_cd,
cm_nm=p_name,
cm_hed =p_head,
cm_dsg = p_dsg
where cm_cd = p_id ;
select p_returnvalue = p_id;
end if ;
end
当我执行这个
时call uspCommonMasterInsertUpdateSingleItem (p_name := 'kk',p_head := '1',p_desc := 'des',p_ct_nm := 'Department')
显示错误
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在':='k
附近使用正确的语法 k',p_head:='1',p_desc:='des',p_ct_nm:='部门')'在第1行
答案 0 :(得分:1)
只需更改
中的通话方法即可call uspCommonMasterInsertUpdateSingleItem (p_name := 'kk',p_head := '1',p_desc := 'des',p_ct_nm := 'Department')
到
call uspCommonMasterInsertUpdateSingleItem ('kk',1,'des','Department')
也请传递" p_id"的值。作为上述调用方法的第一个参数
答案 1 :(得分:0)
以proc中给出的确切顺序给出参数。你在执行中遗漏了p_id。