无法使用Mysql -phpMyAdmin中的存储过程更新表

时间:2014-10-25 11:08:27

标签: mysql sql database stored-procedures

我正在使用从tableA(例如)的触发器调用的过程。在那个程序中,我正在更新另一个表格tableB。但它没有用,我没有得到任何错误,但tableB没有更新。请帮我解决这个问题。

触发:for tableA BEFORE INSERT

BEGIN
   CALL his_arrear(new.Reg_No,new.Sub_Code);
END

步骤:

BEGIN
   DECLARE toup integer;
    select count(*) into toup from tableA where Reg_No=reg and Sub_Code=scode;
    update tableB set his_arrear=toup where regno=reg;
END

实际上这里的程序正在执行,但它没有更新tableB。

1 个答案:

答案 0 :(得分:0)

由于您标记了SQL,以下是我在SQL中的方式:

ALTER PROCEDURE his_arrear
    @reg VARCHAR(10),
    @scode VARCHAR(10)
AS
BEGIN
    DECLARE @toup INTEGER;

    SELECT COUNT(*) AS @toup
    FROM tableA
    WHERE Reg_No=@reg AND Sub_Code=@scode;

    UPDATE tableB
    SET his_arrear=ISNULL(@toup,0)
    WHERE regno=@reg;
END

注意:
  - 我使用VARCHAR(10),因为您没有说明您的数据类型。根据需要进行更改   - 您在命令中使用了Reg_noregno。这些列名是否正确?