programing

매개 변수를 사용하여 MariaDB 저장 프로시저 삽입

shortcode 2022. 9. 25. 15:35
반응형

매개 변수를 사용하여 MariaDB 저장 프로시저 삽입

호스팅 회사가 MariaDB를 사용하는지 모르고 MySQL에서 다른 호스팅 회사로 회사 데이터베이스를 마이그레이션했는데, IN 매개 변수를 사용하여 저장 프로시저를 생성하려고 하면 MariaDB가 매개 변수를 열 n으로 인식합니다.아래의 저장 프로시저 코드를 참조해 주세요.

    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' 

열 이름은 'drawalcode_p'가 아닌 DrawalCode입니다. 'drawalcode_p'는 저장 프로시저에 전달된 매개 변수이지만 서버는 이를 필드 이름으로 인식하고 있습니다.호스팅 회사와 통화해보니 MySQL이 아닌 MariaDB라고 합니다.MySQL 서버에서도 같은 코드가 동작했습니다.

도움이 될 만한 도움은 주시면 감사하겠습니다.

기본이 아닌 구분 기호를 설정하고 절차 본문을 다음과 같이 줄바꿈하는 것을 잊었습니다.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 ;

언급URL : https://stackoverflow.com/questions/43474546/mariadb-insert-stored-procedure-with-parameter

반응형