Mysql 存儲過程 + python調用存儲過程 (內置函數講解及定義摘抄)


 

定義

存儲過程:就是為以后的使用而保存的一條或多條 MySQL語句的集合。可將其視為批文件,雖然它們的作用不僅限於批處理。

 個人使用存儲過程的原因就是因為 存儲過程比使用單獨的SQL語句要快

有如下表(名為 a)

其下,所有都可以用一條sql解決,但是我為了熟悉 存儲過程,而采用函數式來進行書寫

 

簡單案例 1 : 創建函數 name

     , 需要傳入 id值,返回 name值:

# 創建一個名為 name的存儲過程


DELIMITER // create procedure name ( in _id int ) BEGIN select name from a where id=_id; END // DELIMITER;

其中, DELIMITER //告訴命令行實用程序使用 //作為新的語句結束分隔符,
  可以看到標志存儲過程結束的 END定義為END//而不是END; 。
這樣,存儲過程體內的 ;仍然保持不動,並且正確地傳遞給數據庫引擎。
最后,為恢復為原來的語句分隔符,可使用 DELIMITER ;。
除\符號外,任何字符都可以用作語句分隔符。如果你使用的是 mysql命令行實用程序,在閱讀本章時請記住這里的內容。

在運行此存儲函數之后,得到 如下圖

 

 簡單案例2  創建函數 name_1

  要求傳入id值,返回id對應的name字段,保存到變量 @temp中傳入的變量需要加@符號,否則會報錯

  [Procedure execution failed 1414 - OUT or INOUT argument 2 for routine test.name_1 is not a variable or NEW pseudo-variable in BEFORE trigger]

DELIMITER //
create procedure name_1 (
in _id int,
out name_ varchar(255)
)

BEGIN
    select name into name_ from a 
    where id=_id;
END //
DELIMITER;

需要注意的是,在運行的時候,需要傳入id值,和變量名,如下圖(使用navicat),得出結果為小剛

 

 

簡單案例3  創建函數 name_2

  需要傳入id值,對id值+1之后,返回name值

DELIMITER //
create procedure name_2 (
in _id int,
out name_ varchar(255)
)

BEGIN
    DECLARE id_add int; ##聲明變量 id_add
    select id into id_add from a 
    where id=(_id+1);
    select name into name_ from a where id=id_add;
END //
DELIMITER;

講解: 拿到 +1之后的id 放入id_add

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM