1. 程式人生 > >Mysql 儲存過程基本語法

Mysql 儲存過程基本語法

delimiter //
一般情況下MYSQL以結尾表示確認輸入並執行語句,但在儲存過程中不是表示結束,因此可以用該命令將號改為//表示確認輸入並執行。

一.建立儲存過程

1.基本語法:
create procedure sp_name()
begin
.........
end 2.引數傳遞

二.呼叫儲存過程

1.基本語法:call sp_name()
注意:儲存過程名稱後面必須加括號,哪怕該儲存過程沒有引數傳遞

三.刪除儲存過程

1.基本語法:
drop procedure sp_name//
2.注意事項
(1)不能在一個儲存過程中刪除另一個儲存過程,只能呼叫另一個儲存過程

四.區塊,條件,迴圈

1.區塊定義,常用
begin
......
end;
也可以給區塊起別名,如:
lable:begin
...........
end lable;
可以用leave lable;跳出區塊,執行區塊以後的程式碼
2.條件語句

if 條件 then
statement
else
statement
end if;


3.迴圈語句
(1).while迴圈

[label:] WHILE expression DO

statements

END WHILE [label] ;
(2).loop迴圈
[label:] LOOP

statements

END LOOP [label];
(3).repeat until迴圈
[label:] REPEAT

statements

UNTIL expression

END REPEAT [label] ;

五.其他常用命令

1.show procedure status
顯示資料庫中所有儲存的儲存過程基本資訊,包括所屬資料庫,儲存過程名稱,建立時間等
2.show create procedure sp_name
顯示某一個儲存過程的詳細資訊 下面看一個例子

一、MySQL 建立儲存過程

“pr_add” 是個簡單的 MySQL 儲存過程,這個MySQL 儲存過程有兩個 int 型別的輸入引數 “a”、“b”,返回這兩個引數的和

delimiter //   -- 改變分割符

drop procedure if exists pr_add//  -- 若之前建立有這個儲存過程則刪除

計算兩個數之和

  1. create procedure pr_add (a int,b int)
  2. begin
  3. declare c int;
  4. if a is null then
  5. set a = 0;
  6. end if;
  7. if b is null then
  8. set b = 0;
  9. end if;
  10. set c = a + b;
  11. select c as sum;
  12. end
  13. //

二、呼叫 MySQL 儲存過程

  1. call pr_add(10, 20);

執行 MySQL 儲存過程,儲存過程引數為 MySQL 使用者變數。

  1. set @a = 10;
  2. set @b = 20;
  3. call pr_add(@a, @b);

三、MySQL 儲存過程特點

建立 MySQL 儲存過程的簡單語法為:

  1. create procedure 儲存過程名字()
  2. (
  3. [in|out|inout] 引數 datatype
  4. )
  5. begin
  6. MySQL 語句;
  7. end;

MySQL 儲存過程引數如果不顯式指定“in”、“out”、“inout”,則預設為“in”。習慣上,對於是“in” 的引數,我們都不會顯式指定。

1. MySQL 儲存過程名字後面的“()”是必須的,即使沒有一個引數,也需要“()”

2. MySQL 儲存過程引數,不能在引數名稱前加“@”,如:“@a int”。下面的建立儲存過程語法在 MySQL 中是錯誤的(在 SQL Server 中是正確的)。 MySQL 儲存過程中的變數,不需要在變數名字前加“@”,雖然 MySQL 客戶端使用者變數要加個“@”。

  1. create procedure pr_add
  2. (
  3. @a int, -- 錯誤
  4. b int -- 正確
  5. )

3. MySQL 儲存過程的引數不能指定預設值。

4. MySQL 儲存過程不需要在 procedure body 前面加 “as”。而 SQL Server 儲存過程必須加 “as” 關鍵字。

  1. create procedure pr_add
  2. (
  3. a int,
  4. b int
  5. )
  6. as -- 錯誤,MySQL 不需要 “as”
  7. begin
  8. mysql statement ...;
  9. end;

5. 如果 MySQL 儲存過程中包含多條 MySQL 語句,則需要 begin end 關鍵字。

  1. create procedure pr_add
  2. (
  3. a int,
  4. b int
  5. )
  6. begin
  7. mysql statement 1 ...;
  8. mysql statement 2 ...;
  9. end;

6. MySQL 儲存過程中的每條語句的末尾,都要加上分號 “;”

  1. ...
  2. declare c int;
  3. if a is null then
  4. set a = 0;
  5. end if;
  6. ...
  7. end;

7. MySQL 儲存過程中的註釋。

  1. declare c int; -- 這是單行 MySQL 註釋 (注意 -- 後至少要有一個空格)
  2. if a is null then # 這也是個單行 MySQL 註釋
  3. set a = 0;
  4. end if;
  5. ...
  6. end;

8. 不能在 MySQL 儲存過程中使用 “return” 關鍵字。

  1. set c = a + b;
  2. select c as sum;
  3. end;

9. 呼叫 MySQL 儲存過程時候,需要在過程名字後面加“()”,即使沒有一個引數,也需要“()”

  1. call pr_no_param();

10. 因為 MySQL 儲存過程引數沒有預設值,所以在呼叫 MySQL 儲存過程時候,不能省略引數。可以用 null 來替代。

相關推薦

Mysql 儲存過程基本語法

delimiter //一般情況下MYSQL以;結尾表示確認輸入並執行語句,但在儲存過程中;不是表示結束,因此可以用該命令將;號改為//表示確認輸入並執行。 一.建立儲存過程 1.基本語法: create procedure sp_name() begin ......... end 2

Oracle儲存過程基本語法(一)

概念:儲存過程 儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。 在大型資料庫系統中,儲存

SQLSERVER儲存過程基本語法(二)

三、迴圈 --while迴圈計算1到100的和 declare @a int declare @sum int set @a=1 set @sum=0 while @a<=100 begin set @sum+=@a set @

sql server 儲存過程基本語法(轉)

1 一、定義變數 2 --簡單賦值 3 declare @a int 4 set @a=5 5 print @a 6 7 --使用select語句賦值 8 declare @user1 nvarchar(50) 9 select @user1='張三'

oracle儲存過程基本語法(轉載)

oracle 儲存過程的基本語法 1.基本結構 CREATE OR REPLACE PROCEDURE 儲存過程名字 (     引數1 IN NUMBER,     引數2 IN NUMBER ) IS 變數1 INTEGER :=0; 變數2 DATE; BEGIN END 儲存過程名字2.SELE

儲存過程基本語法

儲存過程     儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。     1  CREATE OR REPLACE 

SQLSERVER儲存過程基本語法(中)

五、遊標 declare @ID int declare @Oid int declare @Login varchar ( 50) --定義一個遊標 declare user_cur cursor for select ID, Oid,[Login] from ST_Us

Oracle儲存過程基本語法

儲存過程   1  CREATE OR REPLACE PROCEDURE 儲存過程名   2  IS   3  BEGIN   4  NULL;   5  END; 行1:   CREATE OR REPLACE PROCEDURE 是一個SQL語句通知

Oracle儲存過程基本語法介紹

create or replace procedure autocomputer(step in number) is rsCursor SYS_REFCURSOR; commentArray myPackage.myArray; math number; article number; lang

ORACLE儲存過程----基本語法

for example: create or replace procedure sp_login_error_count(user_name_var varchar2) IS--建立名為sp_login_error_count的儲存過程,並定義傳參--informix的語法(drop procedure

MySQL儲存過程中的3種迴圈,儲存過程基本語法,ORACLE與MYSQL儲存過程/函式的使用區別,退出儲存過程方法

  學無止境 部落格園   首頁   新隨筆   聯絡   訂閱  管理 隨筆-1968  評論-103  文章-4&

MySQL 儲存過程-原理、語法、函數詳細說明

exp sql 十六進制 作用範圍 安全機制 系統管理員 rtrim 編程 xtra Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後存儲在數據庫中,當需要使用該組SQL語句時用戶只需要通過指定儲存過程的名字並給定參數就可以調用執行它了,簡而言之就是一組

MySQL 儲存過程-原理、語法、函式詳細說明

Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後儲存在資料庫中,當需要使用該組SQL語句時使用者只需要通過指定儲存過程的名字並給定引數就可以呼叫執行它了,簡而言之就是一組已經寫好的命令,需要使用的時候拿出來用就可以了。想要快速的瞭解Mysql儲存過程嗎,就一同看一下下文的“Mys

mysql儲存過程語法及例項

儲存過程如同一門程式設計語言,同樣包含了資料型別、流程控制、輸入和輸出和它自己的函式庫。 --------------------基本語法-------------------- 一.建立儲存過程 create procedure sp_name() begin ...

mysql儲存過程查詢結果迴圈遍歷 判斷 賦值 遊標等基本操作

一、首先說下本篇部落格所實現功能的背景和功能是怎樣的:       背景:因為公司專案開始遷移新平臺專案,所以以前的平臺老資料以及訂單資訊需要拆分表,而且需要業務邏輯來分析以前的訂單表,來拆分成另外的幾個新表,包括增加新的流水分析,以及更新其他使用者或者商家的餘額以及對賬

MySQL 儲存過程基本用法

mysql儲存過程詳解 1. 儲存過程簡介 我們常用的操作資料庫語言SQL語句在執行的時候需要要先編譯,然後執行,而儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程

MySql儲存過程中的基本函式和需要用到的運算子

mysql儲存過程學習總結-操作符算術運算子+ 加 SET var1=2+2; 4- 減 SET var2=3-2; 1* 乘 SET var3=3*2; 6/ 除 SET var4=10/3; 3.3333DIV 整除 SET var5=10 DIV 3; 3% 取模 SET var6=10%3 ; 1比較

mysql儲存過程語法大全

20.2.1. CREATE PROCEDURE和CREATE FUNCTION CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body CREATE FUNCTION

Mysql儲存過程8:repeat循環

local cal 其他 host ted query code class pan 語法: repeat SQL until 條件 end repeat; 就是相當於其他語言中的: do{ # }while(); mys

Mysql儲存過程4:mysql變量設置

from 默認 pan procedure weight use mysql變量 sql 寫法 默認全局變量是兩個@@開頭, 可用show variables查看所有默認變量: @@user #declare定義變量只能用在儲存過程中 #declare 變量名 數據類型