日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关系数据库SQL之可编程性存储过程

發布時間:2025/3/20 数据库 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关系数据库SQL之可编程性存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

前面關系數據庫SQL之可編程性函數(用戶自定義函數)一文提到關系型數據庫提供了可編程性的函數、存儲過程、事務、觸發器及游標,前文已介紹了函數,本文來介紹一下存儲過程的創建、執行、刪除。(還是以前文中銀行系統為例)

概述

存儲過程是一組為了完成特定功能的SQL語句集合,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名稱并給出參數(如果該存儲過程帶有參數)來執行。

語法


創建存儲過程

--創建存儲過程 CREATE PROC[EDURE] <存儲過程名稱> -- 添加存儲過程所需的參數[<@參數1> <參數類型1> [= 默認值] [OUTPUT], ……<@參數n> <參數類型n> [= 默認值] [IN|OUT|OUTPUT]] AS BEGIN-- 這里面可以寫為變量賦值語句SQL語句塊 END

注意

  • 其中存儲過程名不能超過128個字,每個存儲過程中最多設定1024個參數;
  • 存儲過程所需的參數可有可無,如果有參數為帶參數存儲過程,沒有參數就是無參數存儲過程;
  • 帶參數存儲過程參數后面有關鍵字OUT|OUTPUT為帶輸出參數存儲過程;
  • [IN|OUT|OUTPUT]介紹

    • IN:在參數后面加了IN關鍵字的表示為輸入參數,默認的情況就是輸入參數;
    • OUT:在參數后面加了OUT關鍵字的表示為輸出參數;
    • OUTPUT:在參數后面加了OUTPUT關鍵字表示為輸入輸出參數,既是傳入參數也是輸出參數。

    調用存儲過程

    --調用存儲過程 EXEC<存儲過程名稱> [參數列表]

    刪除存儲過程

    --刪除存儲過程 DROP PROC[EDURE] <存儲過程名稱>

    示例

    /* * 查詢交易信息表中總的交易金額,以及支取和存入的總金額,并打印出來 */ --判斷存儲過程是否存在 --存在則刪除 if exists(select * from sysobjects where name = 'proc_getTransMoney') drop procedure proc_getTransMoney go --創建無參數存儲過程 create proc proc_getTransMoney as begindeclare @sum_money money --交易總額declare @get_money money --支出總額declare @sav_money money --存入總額select @sum_money = sum(TransMoney) from TransInfoselect @get_money = sum(TransMoney) from TransInfo where TransType = '存款'select @sav_money = sum(TransMoney) from TransInfo where TransType = '取款'print '交易總額='+ltrim(convert(char,@sum_money))print '存入總額='+ltrim(convert(char,@sav_money))print '支出總額='+ltrim(convert(char,@get_money)) end go --執行存儲過程 exec proc_getTransMoney go/* * 查詢指定賬戶掛失的賬戶信息 */ --判斷存儲過程是否存在 --存在則刪除 if exists(select * from sysobjects where name = 'proc_getLostAccount') drop procedure proc_getLostAccount go --創建帶參數輸出存儲過程 create proc proc_getLostAccount -- @CId varchar(20) OUTPUT as beginselect A.CustName as 姓名, A.IDCard AS 身份證號, A.TelePhone as 電話號碼,C.CardID as 銀行卡號,A.Address as 地址from AccountInfo as A inner join CardInfo as C on A.CustID = C.CustIDwhere C.CardID =@CId AND C.IsLost = '是' end go --執行存儲過程 declare @CardID varchar(20); set @CardID= '銀行卡號'; exec proc_getLostAccount @CardID output; print @CardID; go

    本文就介紹到這里。
    如有疑問請聯系我。

    原文來自:簡書

    轉載于:https://www.cnblogs.com/seayxu/p/5484004.html

    總結

    以上是生活随笔為你收集整理的关系数据库SQL之可编程性存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。