我正在使用从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。
答案 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_no
和regno
。这些列名是否正确?