mysql中的存儲過程

存儲過程的作用:有助于提高應用程序的性能。存儲過程可以不必發送多個冗長的SQL語句

廢話不說多,直接實操

##實現num的相加
delimiter $$
CREATE PROCEDURE test1 ()
begindeclare num int default 0;		-- 聲明變量,賦默認值為0select num+20;end $$
delimiter ;                 --將結束符修改成;call test1();			-- 調用存儲過程
drop procedure test1   --如果不需要此存儲函數開源刪除咯
set賦值操作
delimiter $$CREATE PROCEDURE test2 ()
begindeclare num int default 0;set num =50;			-- 給num變量賦值select num;end $$
delimiter ;call test2();
into的使用方法
delimiter $$
CREATE PROCEDURE test3 ()
begindeclare num int default 0;			select count(1) into num from t_student_info;  --計算t_student_info表的個數用num來記錄select num;
end $$
delimiter ;
drop procedure test3;   刪除該存儲函數
call test3();
if的使用
delimiter $$
CREATE PROCEDURE test4 ()
begindeclare id int default 1;			declare class_name varchar(20);if id=1 thenset class_name='要多久你才可以愛上我!';elseif id=2 thenset class_name='不再讓自己遺憾了';elseset class_name='不用想了,誰都不愛我,我只愛我自己';end if;select class_name;
end $$
delimiter ;call test4();

mysql> delimiter;
ERROR:?
DELIMITER must be followed by a 'delimiter' character or string

使用delimiter;會報錯,一定要帶空格
?

 定義一個輸入參數
delimiter $$
CREATE PROCEDURE test5 (in id int)
begindeclare class_name varchar(20);if id=1 thenset class_name='我和xhell腳本的if不一樣!';elseif id=2 thenset class_name='我和python中的if語法有一點帶你不一樣';elseset class_name='不用想了,不靠別人';end if;select class_name;  
注:存儲過程中聲明了 class_name 變量并對其進行了賦值,但并沒有通過 SELECT 語句來顯示其值。你需要在存儲過程末尾添加 SELECT class_name; 語句,以便在調用存儲過程時返回 class_name 的值end $$
delimiter ;call test5(3);
case的使用
delimiter $$
CREATE PROCEDURE test6 (in month int,out season varchar(10))
begincase when month >=1 and month<=3 thenset season='spring';when month >=4 and month<=6 thenset season='summer';when month >=7 and month<=9 thenset season='autumn';when month >=10 and month<=12 thenset season='winter';end case;
end $$
delimiter ;call test6(9,@season);			-- 定義會話變量來接收test8存儲過程返回的值select @season;
@xxx:代表定義一個會話變量,整個會話都可以使用,當會話關閉(連接斷開)時銷毀
@@xxx:代表定義一個系統變量,永久生效。

while循環的使用
delimiter $$
CREATE PROCEDURE test7 (in count int)
begindeclare total int default 0;declare i int default 1;while i<=count doset total=total+i;set i=i+1;end while;select total;
end $$
delimiter ;call test7(10);

repeat的使用
delimiter $$
CREATE PROCEDURE test7 (count int)		  -- 默認是輸入(in)參數
begindeclare total int default 0;repeat set total=total+count;set count=count-1;until count=0				-- 結束條件,注意不要打分號end repeat;select total;
end $$
delimiter ;call test8(10);使用 select total; 語句輸出 total 的最終值。
total 是局部變量,只在該存儲過程內部有效。
而 @total 是用戶變量,可以在整個會話中使用和共享。

loop的使用
delimiter $$
CREATE PROCEDURE test9 (count int)		 -- 默認是輸入(in)參數
begindeclare total int default 0;	sum:loop				-- 定義循環標識		 	set total=total+count;set count=count-1;if count < 1 thenleave sum;	 -- 跳出循環			end if;end loop sum;			 -- 標識循環結束		select total;end $$
delimiter ;call test9(10);
創建一張臨時表:
create temporary table temp_table(id int,name varchar(10)
);
insert into temp_table values (1,'xiaoxiaowang');select * from temp_table ;
注意:臨時表示查詢不到的
show tables;   -- 不會顯示臨時表的存在
測試存儲過程創建臨時表是可以查到的,但是在存儲函數中是查看不到的,結果會報錯:
create procedure pro1()
begincreate temporary table temp_table(id int);insert into temp_table values(1);select * from temp_table;
end;call pro1();
測試存儲函數創建臨時表
create function fun2()
returns int
begindeclare id int ;create table temp_table(				id int);insert into temp_table values(1);select id from into id temp_table;	return id;
end;

怎么查看自己創建了多少的存儲過程????????????

SHOW PROCEDURE STATUS WHERE Db = 'your_database_name';
咱們的業務應該放到咱們的業務層,而不是把業務滯留到數據庫來處理,將業務和數據庫嚴重耦合在一起了!這是導致公司開發不使用存儲過程的


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44559.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44559.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44559.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡高頻面試題

從輸入URL到展現頁面的全過程&#xff1a; 用戶在瀏覽器中輸入URL。瀏覽器解析URL&#xff0c;確定協議、主機名和路徑。瀏覽器查找本地DNS緩存&#xff0c;如果沒有找到&#xff0c;向DNS服務器發起查詢請求。DNS服務器解析主機名&#xff0c;返回IP地址。瀏覽器使用IP地址建立…

Kafka配置SASL認證

Kafka加密 Kafka認證方式 在本博客中我們使用SASL/PLAIN的方式來進行Kafka加密 環境準備 Kafka集群環境 請參考之前的Kafka集群搭建 kafka-broker1kafka-broker2 集群配置SASL/PLAIN認證 用戶校驗 修改server.properties 讓其支持Kafka的認證(每一個broker節點都需要修改這…

jail內部ubuntu apt升級失敗問題解決

在FreeBSD jail 里安裝啟動Ubuntu jammy系統&#xff0c;每次裝好執行jexec ubjammy sh進入Ubuntu系統后&#xff0c;執行apt update報錯。 這個問題困惑了好久&#xff0c;突然有一天仔細去看報錯信息&#xff0c;查看了(man 5 apt.conf) &#xff0c;才搞定問題。簡單來說就是…

MySQL 數據庫(基礎)- 函數

MySQL 數據庫&#xff08;基礎&#xff09;- 函數 介紹 函數 是指一段可以被另一段程序調用的程序或代碼。也意味著&#xff0c;這一段程序或代碼在 MySQL 中已經給我們提供了&#xff0c;我們需要做的就是在合適的業務場景調用對應的函數&#xff0c;完成對應的業務需求即可…

python的簡單爬取

需要的第三方模塊 requests winr打開命令行輸入cmd 簡單爬取的基本格式&#xff08;爬取百度logo為例&#xff09; import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回應 #保存到本地 with open(&…

中國物流信息軟件系統(WMS等)行業概覽,2027年將達到235.1億元

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》人俱樂部 完整版文件和更多學習資料&#xff0c;請球友到知識星球【智能倉儲物流技術研習社】自行下載 這份文件是《2023年中國物流信息軟件系統行…

【Python】下載與安裝

目錄 一、 下載安裝Python 1. 配置環境變量 2. 檢查是否配置成功 一、 下載安裝Python 在我上傳的資源可以免費下載&#xff01;&#xff01;&#xff01; https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…

淺談后置處理器之JSON提取器

淺談后置處理器之JSON提取器 JMeter 的 JSON 提取器&#xff08;JSON Extractor&#xff09;是一個強大的后置處理器&#xff0c;它允許用戶從HTTP響應、數據庫查詢或其他類型的響應中提取JSON數據&#xff0c;并將這些數據存儲為變量&#xff0c;以便在后續的請求中重用。這對…

Mojo AI編程語言(三)數據結構:高效數據處理

目錄 1. Mojo AI編程語言簡介 2. 數據結構在數據處理中的重要性 3. Mojo AI中的基礎數據結構 3.1 數組 3.2 列表 3.3 字典 4. 高效數據結構的實現與優化 4.1 哈希表 4.2 樹結構 4.3 圖結構 5. 高效數據處理技術 5.1 并行處理 5.2 內存優化 5.3 數據壓縮 6. 實戰…

【Redis】哨兵(sentinel)

文章目錄 一、哨兵是什么&#xff1f;二、 哨兵sentinel文件參數三、 模仿主機redis宕機四、哨兵運行流程和選舉原理SDOWN主觀下線ODOWN客觀下線 五、 使用建議 以下是本篇文章正文內容 一、哨兵是什么&#xff1f; 哨兵巡查監控后臺master主機是否故障&#xff0c;如果故障了…

js項目生產環境中移除 console

1、terser-webpack-plugin webpack 構建的項目中安裝使用 安裝&#xff1a; npm install terser-webpack-plugin --save-dev 配置 在webpack.config.js文件中 new TerserPlugin({terserOptions: {output: {comments: false, // 去除注釋},warnings: false, // 去除黃色警告,co…

nx上darknet的使用-目標檢測-自定義訓練與制作預訓練模型

目錄 1 訓練yolov4-tiny 1.1 文件準備 1.1.1 Annotations 1.1.2 JPEGImages 1.1.3 labels 1.1.4 trained_models 1.1.5 classes.name 1.1.6 create_labels_txt.py 1.1.7 custom_training.data 1.1.8 get_labels.py 1.1.9 get_train_val.py 1.1.10 train…

python制作甘特圖的基本知識(附Demo)

目錄 前言1. matplotlib2. plotly 前言 甘特圖是一種常見的項目管理工具&#xff0c;用于表示項目任務的時間進度 直觀地看到項目的各個任務在時間上的分布和進度 常用的繪制甘特圖的工具是 matplotlib 和 plotly 主要以Demo的形式展示 1. matplotlib 功能強大的繪圖庫&a…

內網對抗-基石框架篇單域架構域內應用控制成員組成用戶策略信息收集環境搭建

知識點&#xff1a; 1、基石框架篇-單域架構-權限控制-用戶和網絡 2、基石框架篇-單域架構-環境搭建-準備和加入 3、基石框架篇-單域架構-信息收集-手工和工具1、工作組(局域網) 將不同的計算機按照功能分別列入不同的工作組。想要訪問某個部門的資源&#xff0c;只要在“網絡…

Electron運行報錯:Error Cannot find module ‘node_moduleselectroncli.js‘

Electron運行報錯&#xff1a;Error: Cannot find module ‘node_modules\electron\cli.js’ 顧名思義&#xff0c;命令行執行Electron .時候&#xff0c;會優先從項目目錄查找對應依賴&#xff0c;如果是報錯顯示是找不到項目目錄下的依賴&#xff0c;我們可以從安裝在全局的…

DAMA學習筆記(五)-數據存儲和操作

1.引言 數據存儲與操作包括對存儲數據的設計、實施和支持&#xff0c;最大化實現數據資源的價值&#xff0c;貫穿于數據創建/獲取到處置的整個生命周期。 數據存儲與操作包含兩個子活動&#xff08;圖6-1&#xff09;。 圖6-1 語境關系圖&#xff1a;數據存儲與操作 (1) 數據庫…

記錄vite項目中Cornerstone的兼容問題(持續更新)

&#x1f50e; 在vite項目中打包提示錯誤 ESM integration proposal for Wasm" is not supported currently. ?? 問題描述 Error: Could not load /home/xxx/xxx/node_modules/icr/polyseg-wasm/dist/ICRPolySeg.wasm (imported by node_modules/icr/polyseg-wasm/di…

js ES6 part3

Number 是內置構造函數&#xff0c;用來創建數值 const price 12.345console.log(price.toFixed(2))//保留兩位小數 12.35 綜合案例購物車 <body><div class"list"><!-- <div class"item"><img src"https://yanxuan-item…

【代碼隨想錄】【算法訓練營】【第66天】 [卡碼95]城市間貨物運輸II [卡碼96]城市間貨物運輸III

前言 思路及算法思維&#xff0c;指路 代碼隨想錄。 題目來自 卡碼網。 day 66&#xff0c;周五&#xff0c;ding ding~ [卡碼95] 城市間貨物運輸II 題目描述 卡碼95 城市間貨物運輸II 解題思路 前提&#xff1a; 思路&#xff1a; 重點&#xff1a; 代碼實現 C語言 …

數據結構(Java):隊列Queue集合力扣面試OJ題

1、隊列 1.1 隊列的概念 隊列是一個特殊的線性表&#xff0c;只允許在一端&#xff08;隊尾&#xff09;進行插入數據操作&#xff0c;在另一端&#xff08;對頭&#xff09;進行刪除數據。隊列具有先進先出FIFO(First In First Out)的特性。 入隊&#xff1a;數據只能從隊尾…