1

我有这个 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 服务器版本相对应的手册,以在第 5 行的“DECLARE comp_cd varchar(20) SELECT p.BRANCH_CD IN branch_cd,p.COMP_CD IN com”附近使用正确的语法

4

2 回答 2

0

;在声明语句后使用(分号)。前任,

BEGIN
    DECLARE branch_cd varchar(20);
    DECLARE comp_cd varchar(20);
于 2012-06-20T10:09:45.330 回答
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 语句而不是两个 SELECT 和 INSERT。

于 2012-06-20T10:54:58.747 回答