《mysql必知必會》讀書筆記--存儲過程的使用

来源:http://www.cnblogs.com/wulaa/archive/2017/11/01/7768069.html
-Advertisement-
Play Games

以前對mysql的認識與應用只是停留在增刪改查的階段,最近正好在學習mysql相關內容,看了一本書叫做《MySQL必知必會》,看了之後對MySQL的高級用法有了一定的瞭解。以下內容只當讀書筆記。 如有轉載請註明出處~ 存儲過程的使用 執行存儲過程 執行名為productpricing的存儲過程 創建 ...


以前對mysql的認識與應用只是停留在增刪改查的階段,最近正好在學習mysql相關內容,看了一本書叫做《MySQL必知必會》,看了之後對MySQL的高級用法有了一定的瞭解。以下內容只當讀書筆記。

如有轉載請註明出處~

存儲過程的使用

執行存儲過程

CALL productpricing()

  執行名為productpricing的存儲過程

創建存儲過程

CREATE PROCEDURE productpricing()
BEGIN
SELECT avg(prod_price) AS priceaverage
FROM products;
END;

  註意:如果使用mysql的命令行程式,";"是分隔符,存儲過程中也有";"這樣會造成使用存儲過程中的SQL出現語法錯誤,解決辦法是臨時更改語句的分隔符:

DELIMITER //
....
DELIMITER ;

  其中,除了\ 之外,任何字元都可以用作語句分隔符

刪除存儲過程

DROP PROCEDURE productpring;

  只是給出存儲過程的名字,不用跟()

存儲過程參數的使用

--創建存儲過程
CREATE PROCEDURE ordertotal(
IN onumber INT,
OUT ototal DECIMAL(8,2)
)
BEGIN
SELECT sum(item_price*quantity)
FROM orderitems
WHERE order_num = onumber
INTO ototal;
END;
--調用
CALL ordertotal(234567, @total)
--顯示結果
SELECT @total

智能存儲過程 

  前面的存儲過程只是為瞭解及學習使用,實際應用中的存儲過程不是像上面的一樣簡單。如下是一較為複雜的存儲過程:

-- 創建一個名為ordertotal的存儲過程
-- 參數:onumber-訂單號 taxable-是否上稅(0,不需要 1,需要) ototal-返回的合計
CREATE PROCECURE ordertotal(
IN onumber INT,
IN taxable BOOLEAN,
OUT ototal DECIMAL(8,2)
) COMMENT 'Obtain order total, optionally adding tax'
BEGIN
-- 定義臨時變數total-存儲查詢到的合計
DECLARE total DECIMAL(8,2)
-- 臨時變數taxrate-稅點
DECLARE taxrate INT DEFAULT 6;

-- 得到查詢的合計
SELECT Sum(item_price * quantity) 
FROM orderitems
WHERE order_num = onumber
INTO total;

-- 判斷是否需要上稅
IF taxable THEN
-- 需要,將上稅部分添加進合計
SELECT total+(total/100*taxrate) INTO total;
END IF;
-- 將最終的合計返回
SELECT total INTO ototal;
END;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在ORACLE資料庫(10.2.0.5.0)上修改一個包的時候,編譯有錯誤,具體錯誤信息為"ORA-04028: cannot generate diana for object xxx"。 Warning: Package Body created with compilation errors.... ...
  • 在使用和設計資料庫時個人的一些建議: 1、在設計和使用表等時,請永遠想到一個問題:資料庫時用來存儲數據和查詢數據用的,我們需的是寫和查詢 2、前期在設計數據表結構時,請不要隨意使用數據類型,請認真思考你的需求類型,隨意設計帶來的後果就是查詢速度超級慢,最後被迫重新設計 3、數據類型:能用一個位元組表達 ...
  • 導入數據發生 ora-12592 TNS:包錯誤, 網上搜尋資料發現原因是導入時間長導致防火牆觸發了。 解決方法: 1.關掉防火牆嘗試導入 2.如果是用本地客戶端導入可以嘗試到伺服器上導入 3.在資料庫服務端和客戶端配置sqlnet.ora文件,設置參數SQLNET.SEND_TIMEOUT更大。 ...
  • 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4分片集群系列之三:搭建分片集群 -- 哈希分片 + 安全 4、mongo 3.4分片集群系 ...
  • use master; go declare @temp nvarchar(20) declare myCurse cursor for select spid from sys.sysprocesses where dbid=DB_ID('資料庫名稱')--待清理的資料庫 open myCurse ...
  • 報錯: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too ...
  • 1.1 認識oracle Mysql是非常簡單易學的資料庫,自己下載預設安裝的版本是禁止其他用戶訪問的,但是只要設置一下可以通過ip訪問,就能實現多用戶操作同一個資料庫。比如說自己做了一個登陸註冊的頁面,並部署到tomcat伺服器上,別人只要輸入正確的https地址就能訪問這個頁面(區域網),(廣域 ...
  • 安全管理 mysql自帶的mysql資料庫中的user表可查看用戶所有資料 創建用戶帳號 重命名用戶帳號 刪除用戶帳號 mysql5以前必須先REVOKE帳號相關的許可權,然後再DROP USER; 用戶的許可權 查看 表示允許ben在crashcourse資料庫上使用select 表示撤銷ben在cr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...