存儲過程

来源:http://www.cnblogs.com/yangsongxiao/archive/2016/08/16/5775899.html
-Advertisement-
Play Games

存儲過程 一 存儲過程的概念 存儲過程是在資料庫管理系統保存的,預先編譯的,能實現某種功能的SQL程式,它是資料庫應用中運用比較廣泛的一種數據對象。 為什麼需要存儲過程? 1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提 ...


存儲過程

一 存儲過程的概念

存儲過程是在資料庫管理系統保存的,預先編譯的,能實現某種功能的SQL程式,它是資料庫應用中運用比較廣泛的一種數據對象。

為什麼需要存儲過程?

1.存儲過程只在創造時進行編譯,以後每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。
2.當對資料庫進行複雜操作時,可將此複雜操作用存儲過程封裝起來與資料庫提供的事務處理結合一起使用。
3.存儲過程可以重覆使用,可減少資料庫開發人員的工作量。
4.安全性高,可設定只有某些用戶才具有對指定存儲過程的使用權

存儲過程的優點:

1.模塊化程式設計

2.執行速度塊,效率高

3.減少網路流量

4.具有良好的安全性

 

二 系統存儲過程

SQL_SERVER 提供系統存儲過程,它們是一組預編譯的T-SQL語句,系統存儲過程提供了管理資料庫和更新表的機制,並充當從系統表中檢索信息的快捷方式。

常用的系統存儲過程

系統存儲過程

說明

sp_databases

列出服務上的所有資料庫

sp_helpdb

報告有關指定資料庫或所有資料庫的信息

sp_renamedb

更改資料庫的名稱

sp_tables

返回當前環境下可查詢的對象的列表

sp_columns

返回某個表列的信息

sp_help

返回某個表的所有信息

sp_helpconstraint

查看某個表的約束

sp_helpindex

查看某個表的索引

sp_stored_procedures

列出當前環境中的所有存儲過程

sp_password

添加或修改登錄賬戶的密碼

 

三 用戶自定義的存儲過程

1.創建不帶參數的存儲過程

Create proc usp_selectstu

As

Select StudentName,Gender,GradeId,Phone from dbo.Student

 

調用存儲過程:exec usp_selectstu

2.創建帶入參數的存儲過程

Create proc usp_stuInfo @gradeid int=2       (預設)

As

Select * from student where gradeId=@gradeid

調用存儲過程:exec usp_stuInfo 2

3.創建帶出參數的存儲過程

create proc usp_selectGrade @name nvarchar(10),@gradeid int output

As

Select @gradeid=gradeid from student where  studentname=@name

print @gradeid

 

調用存儲過程:

declare @id int

exec usp_selectGrade '李小龍',@id output 

 

  4、 帶通配符參數存儲過程

Create proc usp_one  @name nvarchar(10)

as

select * from dbo.Student where StudentName like @name

 

exec usp_one '%'

   5、 不緩存存儲過程

緩存就是數據交換的緩衝區(稱作Cache),當某一硬體要讀取數據時,會首先從緩存中查找需要的數據,如果找到了則直接執行,找不到的話則從記憶體中找。由於緩存的運行速度比記憶體快得多,故緩存的作用就是幫助硬體更快地運行。

Sql Server系統記憶體管理在沒有配置記憶體最大值,很多時候我們會發現運行Sql Server的系統記憶體往往居高不下。這是由於他對於記憶體使用的策略是有多少閑置的記憶體就占用多少,直到記憶體使用慮達到系統峰值時(預留記憶體根據系統預設預留使用為準,至少4M),才會清除一些緩存釋放少量的記憶體為新的緩存騰出空間。

這些記憶體一般都是Sql Server運行時候用作緩存的,例如你運行一個select語句, 執行個存儲過程,調用函數;

1. 數據緩存:執行個查詢語句,Sql Server會將相關的數據頁(Sql Server操作的數據都是以頁為單位的)載入到記憶體中來,下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。

2.執行命令緩存:在執行存儲過程,自定函數時,Sql Server需要先二進位編譯再運行,編譯後的結果也會緩存起來, 再次調用時就無需再次編譯。

 

create proc proc_temp
with recompile
as
    select * from student


exec proc_temp

 

6加密存儲過程

exec sp_helptext 儲存過程名      可以查看儲存過程代碼

create proc proc_temp_encryption

with encryption

as

    select * from student;

go

--存儲過程的內容不會被輕易看到(雖然解密也是有可能的)。

--應用這個,我們可以對某些關鍵的存儲過程進行加密。

--但此時,存儲過程仍然能被executealterdrop

exec proc_temp_encryption;

exec sp_helptext 'proc_temp'

exec sp_helptext 'proc_temp_encryption'

(註意:加密存儲過程前應該備份原始存儲過程,且加密應該在部署到生產環境前完成。) 

 


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

-Advertisement-
Play Games
更多相關文章
  • #define QUICKRGB(r,g,b) [UIColor colorWithRed:r / 255.0 green:g / 255.0 blue:b / 255.0 alpha:1.0] #define HEXCOLOR(hex) [UIColor colorWithHex:hex] #de ...
  • IONIC用一下命令打包會自動簽名並且打包 自己簽名並且打包方法: 1》在你項目app\platforms\android目錄下新建文件:debug-signing.properties,文件里內容如下: 2》在同目錄下用dos命令生成簽名(demo.keystore)文件 keytool是工具名稱 ...
  • 一.界面搭建 1.項目需求 主界面能左右滾動,還能上下滾動,點擊按鈕跳轉界面 2.分析界面 點擊按鈕跳轉界面可以自定義UITabBarCotroller來實現 左右滾動,可以利用scrollView來實現 或 UICollectionView 上下滾動,用tableView可以實現 3.選擇實現方案 ...
  • 參考文章:微信公眾號文章 一直對sql中的left和right有誤解,一直以為它是這樣的。 執行這樣一句: 出現的結果是這樣的: 而我心中這樣認為: 我認為只出現第二個。 運行了就知道了。 ...
  • 有時候我們的某個程式或者應用在執行SQL語句時報錯了, 我們需要拿到報錯的SQL語句檢查, 那麼你可以藉助:SQL Profiler工具來實現. 1.SQL Profiler是一個可以檢測SQL伺服器上SQL語句執行情況的工具,也稱SQL抓包工具. 2.打開 SQL Profiler: 開始=》所有 ...
  • 對於程式員來說,編程過程中或多或少會和資料庫打交道。如果採用Visual Studio進行程式開發,則微軟的Sql Server資料庫是最好的選擇。但是問題來了,Sql Server資料庫動輒幾個G,安裝後占用的空間也相當大,是不是每個開發人員在開發時都需要安裝Sql Server呢?其實,對於小型 ...
  • 環境要求JDK 1.6+java -versionPython 2.6.6+python -V ZooKeeper3.4.5+storm 0.9.4+ 單機模式上傳解壓 下麵分別啟動ZooKeeper、Nimbus、UI、supervisor、logviewer 需要多等一會兒,通過jps觀察 登錄 ...
  • Hive是為瞭解決hadoop中mapreduce編寫困難,提供給熟悉sql的人使用的。只要你對SQL有一定的瞭解,就能通過Hive寫出mapreduce的程式,而不需要去學習hadoop中的api。 在部署前需要確認安裝jdk以及Hadoop 如果需要安裝jdk以及hadoop可以參考我之前的博客 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...