mysql 儲存過程關聯sql SQL儲存過程

2021-10-17 10:38:55 字數 2196 閱讀 9825

大家晚上好,我是阿濤。sql儲存過程,儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件。在資料量特別龐大的情況下利用儲存過程能達到倍速的效率提公升。

在工作裡也會經常遇到重複性的工作,這時候就可以把常用的sql寫好儲存起來(比如根據身份證計算年齡,根據超市消費記錄計算每個月消費總額,消費次數等等),這就是儲存過程。

.如何使用儲存過程

1.1 無引數的儲存過程

create procedure 儲存過程名稱()begin 例項1:查詢日期

# mysql中delimiter //create procedure q_date() begin select date from db_name.tablename;end //delimiter ;

為什麼有delimiter //,"delimiter //" 語句的作用是將mysql的結束符設定為//,因為mysql預設的語句結束符為分號; ,儲存過程中的sql語句需要分號來結束,為了避免與儲存過程中sql語句結束符相衝突,需要使用delimiter 改變儲存過程的結束符,並以"end //"結束儲存過程。儲存過程定義完畢之後再使用delimiter ;恢復預設結束符。delimiter 也可以指定其他符號為結束符。注意:當使用delimiter命令時,應該避免使用反斜槓(\)字元,因為反斜槓是mysql的轉義字元!!!其實這個儲存過程跟sas的巨集函式是很像很像的,功能都是為了簡化一些重複操作。

呼叫:

call q_date();
結果:

1.2 有引數的儲存過程

create procedure 儲存過程名稱(引數1,引數2,...)begin 例項2:

增加引數**,查詢開盤價為xx的日期

delimiter //create procedure q_date_price(price float(10)) begin  select date,open from db_name.tablename where open=price;end //delimiter ;

呼叫:帶引數

call q_date_price(20); # 查詢open**為20的日期
結果:

1.3 預設引數的儲存過程

前面的儲存過程名稱後面是create procedure name (in/out/inout,引數),括號裡面只包含引數的型別和名字,方便呼叫。

in 輸入引數:引數初始值在儲存過程前被指定為預設值,在儲存過程中修改該引數的值不能被返回;

out輸出引數:引數初始值為空,該值可在儲存過程內部被改變,並可返回;

inout輸入輸出引數:引數初始值在儲存過程前被指定為預設值,並且可在儲存過程中被改變和在呼叫完畢後可被返回。

對了如果要刪除的話,drop procedure name 就可。

注意:定義不同的儲存過程,要使用不同的儲存過程名稱,相同的儲存過程的名字會引起系統報錯

往期推薦閱讀白話mcmc爬蟲之scrapy框架什麼是推薦系統極速視覺化bi——tableau

end半壺水全棧工程師,好讀書,甚喜之

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...

mysql 儲存過程 MySQL儲存過程

目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...