參考
create procedure procedure_name(引數) -- 如果儲存過程需要接受引數,可以在()中列舉出來。即使沒有引數後面仍然要跟()。begin和end語句用來限定儲存過程體,過程體本身是個簡單的select語句這裡可以輸入多個引數,每個引數以逗號分隔。
begin
sql; --注意:寫完sql後需要寫分號 ,不然會報錯
end例子:
已知資料a中存在課程表和成績表
建立乙個儲存過程,根據輸入的學號(s_id)及課程名稱(c_name),查詢某個學生某門課程的成績
create procedure getstudentcore(in sno varchar(20),in cname varchar(20),out sscore int)
begin
select score.s_score
into sscore
from course left join score
on course.c_id=score.c_id
where score.s_id=sno and course.c_name=cname;
end
其中
關鍵字out指出相應的引數用來從儲存過程傳給乙個值(返回給呼叫者)。mysql支援in(傳遞給儲存過程)、out(從儲存過程中傳出、如這裡所用)和inout(對儲存過程傳入和傳出)型別的引數。儲存過程的**位於begin和end語句內,如前所見,它們是一些列select語句,用來檢索值,然後儲存到相應的變數(通過into關鍵字)
call procedure_name(對應儲存過程的引數...) // mysql稱儲存過程的執行為呼叫,因此mysql執行儲存過程的語句為call
例子
檢視學號為03,課程名為yumen的成績。
call getstudentcore('03','yuwen',@c); --這裡執行儲存過程後不會輸出結果,所以還需要select 變數,檢視得到的變數值。
目前存在問題,若課程名稱輸入的是中文,如'數學',則無法正確檢視到該課程成績,結果都是null,待排查
如 drop procedure getstudentcore //刪除儲存過程
檢視資料庫中儲存過程的建立情況
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語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...