首頁 資料庫 mysql教程 MYSQL入门学习之十二:存储过程的基本操作_MySQL

MYSQL入门学习之十二:存储过程的基本操作_MySQL

Jun 01, 2016 pm 01:37 PM
database 表達式

bitsCN.com

MYSQL入门学习之十二:存储过程的基本操作

 

相关链接:

MYSQL入门学习之一:基本操作

http:///database/201212/173868.html

MYSQL入门学习之二:使用正则表达式搜索

http:///database/201212/173869.html

MYSQL入门学习之三:全文本搜索

http:///database/201212/173873.html

MYSQL入门学习之四:MYSQL的数据类型

http:///database/201212/175536.html

MYSQL入门学习之五:MYSQL的字符集

http:///database/201212/175541.html

MYSQL入门学习之六:MYSQL的运算符

http:///database/201212/175862.html

MYSQL入门学习之七:MYSQL常用函数

http:///database/201212/175864.html

MYSQL入门学习之八:数据库及表的基本操作

http:///database/201212/175867.html

MYSQL入门学习之九:索引的简单操作

http:///database/201212/176772.html

MYSQL入门学习之十:视图的基本操作

http:///database/201212/176775.html

MYSQL入门学习之十一:触发器的基本操作

http:///database/201212/176781.html

 

存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。    

        使用存储过程需要MySQL5及以后的版本支持。

一、为什么要使用存储过程

        通过把处理封闭在容易使用的单元中,简化复杂的操作;

        将一系列处理步骤放到同一存储过程中,保证了数据的完整性和操作的安全性;

        简化对变更的管理;

        提高性能。使用存储过程比使用单独的SQL语句要快;

        存在一些只能用在单个请求中的MySQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码;

二、基本操作

1、创建存储过程

        CREATE PROCEDURE sp_name ([proc_parameter[,...]])

            [characteristic ...] routine_body

            proc_parameter:

            [ IN | OUT | INOUT ] param_name type

        示例:

[sql] 

mysql>create procedure sp_test()  

    ->begin  

    ->    select userid,username from newname where userid=215;  

    ->end  

    ->//  

 

2、执行存储过程

        CALL sp_name;

        示例:

[sql] 

mysql> call sp_test();  

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

| userid | username |  

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

|    215 | NULL     |  

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

 

3、删除存储过程

        DROP PROCEDURE [ IF EXISTS ] sp_name;

        示例:

[sql] 

mysql> drop procedure if exists sp_test;  

 

4、查看存储过程创建信息

        SHOW CREATE PROCEDURE sp_name;

        示例:

[sql] 

mysql> show create procedure sp_test;  

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

| Procedure | sql_mode | Create Procedure                                       | character_set_client | collation_connection | Database Collation |  

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

| sp_test   |          | CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test`()  

begin  

    select userid,username from newname where userid=215;  

end | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |  

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

 

5、查看存储过程状态

        SHOW PROCEDURE STATUS [ LIKE '' ];

        示例:

[sql] 

mysql> show procedure status like 'sp_test';  

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

| Db   | Name    | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client |  

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

| test | sp_test | PROCEDURE | root@localhost | 2012-12-17 23:57:38 | 2012-12-17 23:57:38 | DEFINER       |         | latin1               |  

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

6、使用存储过程参数

        示例:

[sql] 

mysql> delimiter //  

mysql> create procedure sp_type_cnt(  

    ->     IN in_type int,  

    ->     OUT out_cnt int  

    -> )  

    -> begin  

    ->     select count(*)  

    ->     from newname  

    ->     where type = in_type  

    ->     into out_cnt;  

    -> end;  

    -> //  

mysql> delimiter ;  

mysql> call sp_type_cnt(0,@cnt);  

mysql> select @cnt;  

+------+  

| @cnt |  

+------+  

|  159 |  

+------+  

 

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1244
24
discuz database error怎麼解決 discuz database error怎麼解決 Nov 20, 2023 am 10:10 AM

discuz database error的解決方法有:1、檢查資料庫配置;2、確保資料庫伺服器正在運作;3、檢查資料庫表狀態;4、備份資料;5、清理快取;6、重新安裝Discuz;7、檢查伺服器資源;8、聯繫Discuz官方支持。解決Discuz資料庫錯誤需要從多個方面入手,逐步排除問題原因,並採取相應的措施進行修復。

洩漏揭示了英特爾 Arrow Lake-U、-H、-HX 和 -S 的關鍵規格 洩漏揭示了英特爾 Arrow Lake-U、-H、-HX 和 -S 的關鍵規格 Jun 15, 2024 pm 09:49 PM

英特爾ArrowLake預計將基於與LunarLake相同的處理器架構,這意味著英特爾全新的LionCove效能核心將與經濟體的Skymont效率核心結合。

Can't drop database 'database_name'; database doesn't exist - 如何解決MySQL錯誤:無法刪除資料庫,資料庫不存在 Can't drop database 'database_name'; database doesn't exist - 如何解決MySQL錯誤:無法刪除資料庫,資料庫不存在 Oct 05, 2023 am 11:46 AM

如何解決MySQL報錯:無法刪除資料庫,資料庫不存在概述:MySQL是一種常用的關係型資料庫管理系統。在使用MySQL中,我們經常需要對資料庫進行管理,包括建立資料庫、刪除資料庫等操作。然而,在刪除資料庫時,有時會遇到報錯提示"Can'tdropdatabase'database_name';databasedoesn'texist",即無法刪

如何解決Python的表達式語法錯誤? 如何解決Python的表達式語法錯誤? Jun 24, 2023 pm 05:04 PM

Python作為一種高階程式語言,易於學習和使用。一旦需要編寫Python程式時,無法避免地遇到語法錯誤,表達式語法錯誤是常見的一種。在本文中,我們將討論如何解決Python的表達式語法錯誤。表達式語法錯誤是Python中最常見的錯誤之一,它通常是由於錯誤的使用語法或缺少必要組件而導致的。在Python中,表達式通常由數字、字串、變數和運算子組成。最常見的

Java Lambda 表達式實戰:用程式碼解鎖函數式程式設計的奧秘 Java Lambda 表達式實戰:用程式碼解鎖函數式程式設計的奧秘 Feb 26, 2024 am 10:25 AM

Lambda表達式,顧名思義,就是一種以箭頭符號(->)為核心的匿名函數。它允許你將程式碼區塊作為參數傳遞給其他方法,或將其儲存到變數中以供以後使用。 Lambda表達式語法簡潔、易於理解,非常適合處理資料流和平行計算。 1.Lambda表達式的基本語法Lambda表達式的基本語法如下:(參數列表)->{程式碼區塊}其中,參數列表和程式碼區塊都是可選的。如果只有一個參數,可以省略括號。如果程式碼區塊只有一行,可以省略大括號。例如,以下程式碼區塊使用Lambda表達式實現了將數字加1的功能:List

在C和C++中,逗號(comma)的用法是用來分隔表達式或語句 在C和C++中,逗號(comma)的用法是用來分隔表達式或語句 Sep 09, 2023 pm 05:33 PM

在C或C++中,逗號「,」有不同的用途。在這裡我們將了解如何使用它們。逗號作為運算符。逗號運算符是一個二元運算符,它計算第一個操作數,然後丟棄結果,然後計算第二個運算符並傳回值。逗號運算子在C或C++中的優先權最低。範例#include<stdio.h>intmain(){  intx=(50,60);  inty=(func1(),func2());}這裡60將被指派給x。對於下一語句,將會先執行func1(

介紹C語言中的指數函數表達式 介紹C語言中的指數函數表達式 Feb 18, 2024 pm 01:11 PM

C語言中指數函數表達式的寫法介紹及代碼範例什麼是指數函數指數函數是數學中一類常見的函數,可以表示為f(x)=a^x的形式,其中a為底數,x為指數。指數函數主要用來描述指數成長或指數衰減的情況。指數函數的程式碼範例在C語言中,我們可以使用數學庫中的pow()函數來計算指數函數,以下是一個範例程式:#include

Java 中的 lambda 表達式 Java 中的 lambda 表達式 Jun 09, 2023 am 10:17 AM

Java中的lambda表達式隨著Java8的發布,lambda表達式成為了Java開發者們最關注和討論的話題之一。 Lambda表達式可以簡化Java程式設計師繁瑣的書寫方式,同時也能夠提升程式的可讀性和維護性。在本文中,我們將深入探討Java中的lambda表達式,以及它們如何在Java程式碼中提供更簡單、更直覺的程式設計體驗。

See all articles