MySQl存储过程使用参数名称和值传递参数

时间:2014-03-19 09:23:59

标签: mysql sql

我正在使用存储过程。

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行

2 个答案:

答案 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。