无法创建功能

时间:2012-06-20 09:57:15

标签: mysql

我有mysql程序的代码,但我无法创建程序

DELIMITER @@
CREATE PROCEDURE hrpayroll.sal_gen_init
(IN `emp_id` INT)
BEGIN
    DECLARE branch_cd varchar(20)
    DECLARE comp_cd varchar(20)
    SELECT p.BRANCH_CD IN branch_cd,p.COMP_CD IN comp_cd FROM p_employee_mst p WHERE p.EMPL_ID = emp_id
    INSERT INTO p_sal_hdr (COMP_CD,BRANCH_CD,EMPL_ID) VALUES(comp_cd,branch_cd,emp_id)
END @@ 
DELIMITER ; 

我收到此错误

错误代码1064,SQL状态42000:SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'DECLARE comp_cd varchar(20)附近使用正确的语法     选择p.BRANCH_CD IN branch_cd,p.COMP_CD IN com'第5行

2 个答案:

答案 0 :(得分:0)

在declare语句后使用;(分号)。前,

BEGIN
    DECLARE branch_cd varchar(20);
    DECLARE comp_cd varchar(20);

答案 1 :(得分:0)

有一些语法错误。试试这个程序 -

CREATE PROCEDURE sal_gen_ini(IN `emp_id` INT)
BEGIN
  DECLARE branch_cd_var varchar(20);
  DECLARE comp_cd_var varchar(20);

  SELECT
    p.BRANCH_CD, p.COMP_CD INTO branch_cd_var, comp_cd_var
  FROM
    p_employee_mst p
  WHERE
    p.EMPL_ID = emp_id;

  INSERT INTO p_sal_hdr (COMP_CD,BRANCH_CD,EMPL_ID)
    VALUES(comp_cd_var,branch_cd_var,emp_id);
END

请注意,我还重命名了声明的变量,以避免字段和变量值出现问题。


尝试使用一个SELECT...INTO Statement而不是两个SELECT和INSERT。