1. 程式人生 > 資料庫 >MySQL 宣告變數及儲存過程分析

MySQL 宣告變數及儲存過程分析

宣告變數

設定全域性變數

set @a='一個新變數';

在函式和儲存過程中使用的變數declear

declear a int unsigned default 1;

這種變數需要設定變數型別 而且只存在在 begin..end 這段之內

select .. into.. 直接將表內內容賦值到指定變數當中

select name,bid into @a,@b from bank limit 1;

要注意一點就是變數名不能和欄位名一致

儲存過程

儲存過程將一段通用的操作封裝在一起 這樣再不同平臺都可以公用了

儲存過程沒有返回值,而且不能sql語句呼叫,只能是call呼叫,而且不返回結果集,執行就執行了

要注意的是在儲存過程中進行sql語句要用到 ; 這個系統預設結束符 要重新設定成別的,不然在寫過程的一半系統就錯認程式為終止繼而報錯

改變結束命令符為$

delimiter$+回車 或者簡寫成 \d $+回車

顯示所有儲存過程

show procedure status;

刪除指定儲存過程

drop procedure 過程名;

儲存過程演示'

\d $ 1 create procedure yanshi(in arg tinyint)
begin
declare age tinyint default 0;
set age=arg;
if age<20 then
select '小於20的數';
elseif age>20 then
select '大於20的數';
end if;
end
$
//呼叫過程
set @num=12$
call yanshi(@num)$
call yanshi(21)$

判斷輸入到儲存過程中的數字屬於哪個階段

在儲存過程中傳參分 in,out,inout 三種

in 可以輸出從外部傳入的變數 不會改變傳進變數本來的值

create procedure a(in id int)
begin
  select id;
  set id = 100;
end
$
set @id=1$
call a(@id)$ //輸出1 即從外部傳進來的@id 的值
select $id$ //輸出1 說明儲存過程中沒有改變傳進的值

out 不能輸出從外部傳進的值 會改變傳進變數本來的值

create procedure b(out id int)
begin
  select id;
  set id = 100;
end
$
set @id=1$
call b(@id)$  //輸入null
select @id$ //輸出100

inout 就是又能輸出傳入變數又能改變傳入變數咯

下面是檢驗你電腦硬體效能的時候了

還記得當年的bank表嗎? 就是他保留住 然後執行以下命令:

create procedure addbank()
begin
  declare i int default 0;
  set i = 5000000;
  while i > 0 do
  insert into bank (name) values (i);
  set i = i - 1;
  end while;
end
$
call addbank()$

祝你好運

總結

以上就是本文關於MySQL 宣告變數及儲存過程分析的全部內容,希望對大家有所幫助。感興趣的朋友可以參閱:幾個比較重要的MySQL變數 MySQL prepare原理詳解 ORACLE SQL語句優化技術要點解析等,有什麼問題可以隨時留言,小編會及時回覆大家的。感謝朋友們對我們網站的支援!