【问题标题】:Can't update table using stored procedure in Mysql -phpMyAdmin无法使用 Mysql -phpMyAdmin 中的存储过程更新表
【发布时间】:2014-10-25 11:08:26
【问题描述】:

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

触发器:用于插入前的 tableA

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。

【问题讨论】:

  • 15个多小时,还是没有反应……:(
  • 我认为你应该在触发器AFTER INSERT中调用Stored Procedure

标签: mysql sql database stored-procedures


【解决方案1】:

既然您标记了 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。这些列名正确吗?

【讨论】:

  • 标签SQLNOT关于“SQL Server”的。 SQL 只是一种查询语言SQL 不涉及特定的 DBMS 产品。来自 Microsoft 的涉及 DBMS 的问题标有sql-server
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 2020-05-10
相关资源
最近更新 更多