Stored-Procedures

從文件導入儲存過程,但表沒有數據

  • January 17, 2018

這是我遇到問題的儲存過程(從文件導入):

DELIMITER //
CREATE PROCEDURE `books_database`()
BEGIN
 DECLARE n INT DEFAULT 0;
 WHILE n < 5 DO
   INSERT INTO books.science (Title,Author) VALUES ('Data Structures Using C','Aaron Tenenbaum');
   INSERT INTO books.science (Title,Author) VALUES ('C Programming Language','Brian W. Kernighan, Dennis Ritchie');
   INSERT INTO books.science (Title,Author) VALUES ('My Inventions','Nikolas Tesla');
   SET n = n + 1;
 END WHILE;
END //

當我導入 SP 文件時,它沒有錯誤地完成。當我檢查數據庫/表時,沒有從 SP 插入數據。

這個儲存過程有什麼不足或錯誤?

導入或創建儲存過程的事實不包括其執行。

創建 SP(通過 MySQL Shell 或通過引導文件)後,您必須呼叫它,以便處理儲存在其中的常式。

儲存過程

DELIMITER //
CREATE PROCEDURE `books_database`()
BEGIN
  SELECT...
  INSERT...
END //

呼叫您的儲存過程…

CALL books_database();

額外評論:通過 MySQL Shell 創建儲存過程

  • 在創建您的 SP 之前,首先,選擇use your_database將使用此 SP 的數據庫 ( ),否則,當您嘗試創建 SP 時,MySQL Shell 將返回:ERROR 1046 (3D000): No database selected
  • 在創建 SP 之後,不要忘記回滾到預設分隔符 ( DELIMITER ;) 以便在 MySQL Shell 上執行正常命令。

引用自:https://dba.stackexchange.com/questions/146555