반응형
MariaDB가 절차에서 삽입 실행을 수행하지 않습니다.
저는 MySQL - 실제로 PHPmyAdmin의 MariaDB - 를 사용하고 있으며 저장 프로시저 내부에 삽입을 작성하려고 하고 있으며 명백한 (보안) 이유로 허용되지 않습니다.
GRANT EXECUCT ON PROCEDURE 문을 사용하여 권한을 변경하려고 했습니다.
GRANT EXECUTE ON PROCEDURE test.putDataInFull TO 'root'@'localhost'
정말 벽에 부딪혔어요. 무슨 생각 있어요?
편집:
DELIMITER //
CREATE PROCEDURE putDataInFull (IN matchid INT(11))
BEGIN
DECLARE koula int(11);
DECLARE c varchar(255);
SET @koula = matchid;
SET @c := concat('insert into log (match_id, comment) values (?,\'inPUtDataWeTrtust\');');
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SELECT CONCAT(@c, ' is not valid');
END;
PREPARE stmt FROM @c;
EXECUTE stmt USING @koula;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
p.s. 이건 제작 프로젝트가 아니라 단지 재미있는 일이기 때문에 보안은 정말 신경쓰지 않습니다.
변수를 사용하여 삽입체를 만들 수 있습니다.마법 문자열을 만들 필요는 없습니다.다음은 다른 스택 오버플로 질문의 다른 예입니다.
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/53686512/mariadb-does-not-do-execute-insert-in-procedure
반응형
'programing' 카테고리의 다른 글
안드로이드에서 보기가 보이는지 확인하려면 어떻게 해야 합니까? (0) | 2023.09.06 |
---|---|
ID에 점이 포함되어 있을 때 jquery로 ID별 html 노드를 선택하는 방법은? (0) | 2023.09.06 |
CSS에서 ="XYZ"의 라벨을 선택하는 방법은? (0) | 2023.09.06 |
동일한 Jenkins 작업 공간에서 여러 git 저장소 체크아웃 (0) | 2023.09.06 |
:remote => 형식으로 파일 업로더를 사용하면 작동하지 않습니다. (0) | 2023.09.06 |