Mariadb插入参数存储的过程



我将我的公司数据库从mysql迁移到另一家托管公司,不知道托管公司使用Mariadb,尝试使用我的IN参数创建我的存储过程,Mariadb将参数视为Commarnn。请参阅下面的存储过程代码,其中包含错误:

    CREATE  PROCEDURE ADD_WITHDRAWAL_A(IN withdrawalcode_p VARCHAR(25), IN id_p VARCHAR(8), IN amount_p VARCHAR(12), IN datewithdrawn_p VARCHAR(35), IN approved_p VARCHAR(8))
     START TRANSACTION;
     INSERT INTO Withdrawals(WithdrawalCode, IDD, Amount, DateWithdrawn, Approved) 
     VALUES (withdrawalcode_p, id_p, amount_p, datewithdrawn_p, approved_p);
     UPDATE account SET AccountBalance = AccountBalance - amount_p WHERE IDD = id_p LIMIT 1;
     COMMIT;
    ***** AFTER RUNNING THE ABOVE CODE, MARIADB GAVE THIS ERROR :
    Error
    SQL query:
    INSERT INTO WithdrawalRequest( WithdrawalCode, IDD, Amount, DateWithdrawn, Approved ) 
    VALUES (withdrawalcode_p, id_p, amount_p, datewithdrawn_p, approved_p);
MySQL said: Documentation
#1054 - Unknown column 'withdrawalcode_p' in 'field list' 

列名是提取代码,而不是'tuffalcode_p','fiffalcode_p'是传递到存储过程的参数,但服务器将其视为字段名称。我与托管公司进行了交谈,他们说他们的数据库是Mariadb,而不是MySQL。同一代码在MySQL Server中使用。

我将感谢这里提供的任何有用的帮助。

您忘了设置非默认定界符并将过程主体包装到BEGIN/END中,这是必要的,因为它具有多个语句。

在您的情况下发生的事情是用身体START TRANSACTION创建的过程,其余的被认为是一组普通语句。而是尝试

DELIMITER $$
CREATE  PROCEDURE ADD_WITHDRAWAL_A(IN withdrawalcode_p VARCHAR(25), IN id_p VARCHAR(8), IN amount_p VARCHAR(12), IN datewithdrawn_p VARCHAR(35), IN approved_p VARCHAR(8))
BEGIN
     START TRANSACTION;
     INSERT INTO Withdrawals(WithdrawalCode, IDD, Amount, DateWithdrawn, Approved) 
     VALUES (withdrawalcode_p, id_p, amount_p, datewithdrawn_p, approved_p);
     UPDATE account SET AccountBalance = AccountBalance - amount_p WHERE IDD = id_p LIMIT 1;
     COMMIT;
END $$
DELIMITER ;

最新更新