MySql 5 1儲存過程

2021-09-30 15:58:37 字數 2281 閱讀 5906

下面是mysql5.1儲存過程和函式的基本語法:

(1)儲存過程

create

[definer = ]

procedure sp_name ([proc_parameter[,...]])

[characteristic ...] routine_body

(2)函式

create

[definer = ]

function sp_name ([func_parameter[,...]])

returns type

[characteristic ...] routine_body

(3)引數說明

proc_parameter:[ in | out | inout ] param_name type

func_parameter:param_name type

type: any valid mysql data type

characteristic:

comment 'string'

| language sql

| [not] deterministic

| | sql security

routine_body:valid sql routine statement

(4)in\out\inout三種型別介紹

in:引數傳遞至儲存過程內部,儲存過程可能會修改該變數,但是當從儲存過程中返回時,並不會修改該引數,對caller不可見;

out:引數傳遞給儲存過程,其初始值為null,當從儲存過程返回時,該值對caller可見;

inout:引數傳遞給儲存過程,其初始值可以由caller設定,儲存過程中可以修改該變數,並且修改結果對caller看見;

(5)介紹乙個命令列定義簡單的儲存過程的流程:

mysql> delimiter //

mysql> create procedure ******proc (out param1 int)

-> begin

-> select count(*) into param1 from t;

-> end//

query ok, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call ******proc(@a);

query ok, 0 rows affected (0.00 sec)

mysql> select @a;

+------+

| @a |

+------+

| 3 |

+------+

1 row in set (0.00 sec)

簡單的介紹上述語句:

delimiter // 我們將delimiter(定界符)從「;」變為「//」,可以使在儲存過程中的「;」,可以不被直譯器進行解析,從而可以傳遞給伺服器進行執行;

(7)簡單的介紹一下函式執行過程

mysql> create function hello (s char(20))

mysql> returns char(50) deterministic

-> return concat('hello, ',s,'!');

query ok, 0 rows affected (0.00 sec)

mysql> select hello('world');

+----------------+

| hello('world') |

+----------------+

| hello, world! |

+----------------+

1 row in set (0.00 sec)

簡單的介紹上述語句:

returns char(50) deterministic:定義了函式的返回型別

return concat():函式的返回語句,如果return的型別和returns定義返回的型別不同,會將其轉換為returns的型別,例如,returns型別是set或者enum,而return型別為integer,那麼會將其強制轉化為對應於set和enum對應的string

(8)routine_body:執行體,用begin和end包括,可以包括ddl語句,如create和drop等,還可以使用儲存過程以及transaction的commit語句;

(9)可以使用stored procedure來接受返回result set結果,而不能使用stored function;在routine中不能使用use,有implicit的use database的宣告;

MySQL 5 1 約束簡化

建立表的時候指定約束 primary key主鍵 notnull 非空default 123 預設 unique 唯一constraint fk cid foreign key lie2 references bookcategory category id 外來鍵 ondelete cascade...

MySQL 5 1 原始碼安裝

yum y install libaio ncurses tar zxf mysql 5.1.62.tar.gz cd mysql 5.1.62 a useradd g mysql mysqlgame b configure prefix usr local mysqlgame with chars...

MySql5 1參考手冊

1.關於mysql 2.安裝mysql 3.教程 4.mysql程式概述 5.資料庫管理 6.mysql中的複製 7.優化 8.客戶端和使用工具程式 9.語言結構 10.字符集支援 11.列型別 12.函式和操作符 13.sql語句語法 14.外掛程式是儲存引擎體系結構 15.儲存引擎和表型別 16...