MySQL學習隨記 儲存過程

2021-08-04 19:48:24 字數 1774 閱讀 4022

概念類似於函式, 就是把一段**封裝起來, 當要執行這一段**的時候, 可以通過呼叫該儲存過程來實現, 在封裝的語句體裡面, 可以使用 if/case, case, while 等控制結構. 可以進行sql程式設計.

檢視現有的儲存過程: show procedure status

create procedure 儲存過程名(引數, 引數, ...)

begin

//**

end儲存過程的引數分為輸入引數(in), 輸出引數(out), 輸入輸出引數(inout), 預設是輸入引數

如果儲存過程中就一條語句, begin和end是可以省略的

說明:(1) 儲存過程中, 可以有各種程式設計元素: 變數, 流程控制, 函式呼叫;

(2) 還可以有: 增刪改查等各種mysql語句;

(3) 其中select (或 show, 或desc) 會作為儲存過程執行後的"結果集"返回;

(4) 形參可以設定資料的"進出方向"

案例1: 查詢乙個表裡面某些欄位的語句

create procedure p()

begin

select id,username,`password` from pcuser;

end;

案例2: 第二個儲存過程體會引數

輸入乙個字串, 如果等於h, 則取出id >10 的使用者,如果是其他的值, 則取出id<10的使用者

create procedure p1(str char(1))

begin

if str='h' then

select id,username,`password` from pcuser where id>10;

else

select id,username,`password` from pcuser where id<=10;

end if;

end;

語法: call 儲存過程名稱()

drop procedure [if exists] 儲存過程名

包含迴圈 判斷 帶輸出引數

案例 帶輸出引數的儲存過程

in 輸入引數

out 輸出引數

create procedure p2 (in n int, out res int)

begin

set res = n * n;

end;

call p2(100,@res);

select @res;

inout代表輸入輸出變數 在呼叫時, 使用變數來接收或輸出

create procedure p3 (inout res int)

begin

set res = res * res;

end;

set @res = 100;

call p3 (@res);

select @res;

在程式設計環境中使用

使用者變數只要在前面加乙個@符號即可

set @name='李白';

select @name;

mysql 啟動的時候就存在的變數,

select @@version;

mysql 儲存過程學習 mysql儲存過程學習

一 mysql建立乙個修改表字段的儲存過程 drop procedure if exists pr test create procedure pr test begin declare var int declare var1 int set var 416 set var1 420 while ...

mysql 儲存過程學習

begin 定義 ids 變數 declare ids int default 0 declare summoney decimal default 0 declare num int default 0 查詢集合作為游標 用來迴圈操作的集合 declare company list cursor ...

mysql 儲存過程學習

簡單記錄一下自己學習儲存過程用於以後複習 建立儲存過程.create procedure querybyid in p id integer 建立簡稱名稱是querybyid,引數名是p id begin 開始 declare s int default 0 select s 顯示s 的值 set ...