国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL5的存儲過程詳細(xì)實(shí)例

2024-07-24 12:38:52
字體:
供稿:網(wǎng)友

本文章來介紹一下關(guān)于mysql5的新特性存儲過程了,在mysql5之前是沒有存儲過程這一說的,下面我們來看看mysql5存儲過程的用法.

MySQL 5.0:新特性教程是為需要了解5.0版本新特性的MySQL老用戶而寫的,簡單的來說是介紹了“存儲過程、觸發(fā)器、視圖、信息架構(gòu)視圖.

格式:

  1. CREATE PROCEDURE 過程名 ([過程參數(shù)[,...]]) 
  2. [特性 ...] 過程體 
  3.  
  4. CREATE FUNCTION 函數(shù)名 ([函數(shù)參數(shù)[,...]]) 
  5. RETURNS 返回類型 
  6. [特性 ...] 函數(shù)體 

過程參數(shù):[ IN | OUT | INOUT ] 參數(shù)名 參數(shù)類型

函數(shù)參數(shù):參數(shù)名 參數(shù)類型

返回類型:有效的MySQL數(shù)據(jù)類型即可

特性:

  1. LANGUAGE SQL 
  2. | [NOT] DETERMINISTIC 
  3. | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 
  4. | SQL SECURITY { DEFINER | INVOKER } 
  5. | COMMENT 'string' 

過程體/函數(shù)體:格式如下:

  1. BEGIN 
  2. 有效的SQL語句 
  3. END 

實(shí)例:

  1. DELIMITER $$ 
  2. DROP PROCEDURE IF EXISTS `spTest` $$ 
  3. CREATE PROCEDURE `spTest`(p_title VARCHAR(200), p_description TEXT)  --Vevb.com 
  4. DETERMINISTIC 
  5. BEGIN 
  6. INSERT INTO category (title, description) 
  7. VALUES (p_title, p_description); 
  8. END $$ 
  9. DELIMITER ; 

其中DELIMITER是用來決定SQL分隔符號的,在寫Stored Procedure前,要先把預(yù)設(shè)的分號換掉,寫完 Stored Procedure 的 routine_body 后,再回復(fù)成預(yù)設(shè)的分號.

--刪除:drop procedure if exists up_common_select

--創(chuàng)建

  1. CREATE  PROCEDURE `up_common_select`( 
  2.  in t_name varchar(50) 
  3. begin 
  4.  declare v_sql varchar(500); 
  5.  set v_sql= concat('select * from ',t_name); 
  6.  select v_sql; 
  7.  -- 

--注意:prepare(預(yù)處理)execute stmt using @var,只能跟@var變量,declare和傳入的變量不行!!!

  1. set @v_sql=v_sql; 
  2.  
  3.  prepare stmt from @v_sql; 
  4.  EXECUTE stmt ; 
  5.  deallocate prepare stmt; 
  6.  
  7. end

--調(diào)用:call up_common_select('admin_authority');

注意事項(xiàng):

1  mysql5.0.13之后支持在存儲過程中調(diào)用prepare

2, prepare stmt from 'select * from ?';(錯(cuò))

mysql5.0.24,prepare尚不支持 表名做變量!

解決方案:用 contat()函數(shù),組合字符串

3. execute stmt [using @var,@var2]

必須是@var形式的變量,傳入的參數(shù)變量,declare變量不行

4.deallocate prepare stmt; 顯式的釋放prepare,如果不釋放,mysql會釋放,!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 明星| 汪清县| 额济纳旗| 精河县| 平邑县| 高雄市| 来安县| 江华| 泌阳县| 黎城县| 鄂托克前旗| 龙江县| 吉林省| 绥宁县| 陵水| 眉山市| 大英县| 凤阳县| 普兰店市| 祥云县| 深泽县| 隆安县| 陕西省| 合肥市| 郁南县| 三河市| 文登市| 公安县| 博白县| 政和县| 汝州市| 内乡县| 嘉祥县| 永丰县| 常德市| 子洲县| 南城县| 东源县| 巩留县| 柞水县| 富源县|