国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

基于存儲過程的詳細介紹

2024-08-31 00:44:06
字體:
來源:轉載
供稿:網友

存儲過程簡介

--------------------------------------------------------------------------------什么是存儲過程:存儲過程可以說是一個記錄集吧,它是由一些T-SQL語句組成的代碼塊,這些T-SQL語句代碼像一個方法一樣實現一些功能(對單表或多表的增刪改查),然后再給這個代碼塊取一個名字,在用到這個功能的時候調用他就行了。

存儲過程的好處:

1.由于數據庫執行動作時,是先編譯后執行的。然而存儲過程是一個編譯過的代碼塊,所以執行效率要比T-SQL語句高。

2.一個存儲過程在程序在網絡中交互時可以替代大堆的T-SQL語句,所以也能降低網絡的通信量,提高通信速率。

3.通過存儲過程能夠使沒有權限的用戶在控制之下間接地存取數據庫,從而確保數據的安全。

小結:總之存儲過程是好東西,在做項目時屬于必備利器,下面介紹存儲過程的基本語法。

--------------------------------------------------------------------------------

存儲過程的語法和參數講解

--------------------------------------------------------------------------------

存儲過程的一些基本語法:

復制代碼 代碼如下:


--------------創建存儲過程-----------------

CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]

[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]

--------------調用存儲過程-----------------

EXECUTE Procedure_name '' --存儲過程如果有參數,后面加參數格式為:@參數名=value,也可直接為參數值value

--------------刪除存儲過程-----------------

drop procedure procedure_name --在存儲過程中能調用另外一個存儲過程,而不能刪除另外一個存儲過程


創建存儲過程的參數:

1.procedure_name :存儲過程的名稱,在前面加#為局部臨時存儲過程,加##為全局臨時存儲過程。

2.; number:是可選的整數,用來對同名的過程分組,以便用一條 DROP PROCEDURE 語句即可將同組的過程一起除去。例如,名為 orders 的應用程序使用的過程可以命名為 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc 語句將除去整個組。如果名稱中包含定界標識符,則數字不應包含在標識符中,只應在 procedure_name 前后使用適當的定界符。

3.@parameter: 存儲過程的參數。可以有一個或多個。用戶必須在執行過程時提供每個所聲明參數的值(除非定義了該參數的默認值)。存儲過程最多可以有 2.100 個參數。
使用 @ 符號作為第一個字符來指定參數名稱。參數名稱必須符合標識符的規則。每個過程的參數僅用于該過程本身;相同的參數名稱可以用在其它過程中。默認情況下,參數只能代替常量,而不能用于代替表名、列名或其它數據庫對象的名稱。有關更多信息,請參見 EXECUTE。

4.data_type:參數的數據類型。所有數據類型(包括 text、ntext 和 image)均可以用作存儲過程的參數。不過,cursor 數據類型只能用于 OUTPUT 參數。如果指定的數據類型為 cursor,也必須同時指定 VARYING 和 OUTPUT 關鍵字。有關 SQL Server 提供的數據類型及其語法的更多信息,請參見數據類型。
說明 對于可以是 cursor 數據類型的輸出參數,沒有最大數目的限制。

5.VARYING: 指定作為輸出參數支持的結果集(由存儲過程動態構造,內容可以變化)。僅適用于游標參數。

6.default: 參數的默認值。如果定義了默認值,不必指定該參數的值即可執行過程。默認值必須是常量或 NULL。如果過程將對該參數使用 LIKE 關鍵字,那么默認值中可以包含通配符(%、_、[] 和 [^])。

7.OUTPUT :表明參數是返回參數。該選項的值可以返回給 EXEC[UTE]。使用 OUTPUT 參數可將信息返回給調用過程。Text、ntext 和 image 參數可用作 OUTPUT 參數。使用 OUTPUT 關鍵字的輸出參數可以是游標占位符。

8.RECOMPILE: 表明 SQL Server 不會緩存該過程的計劃,該過程將在運行時重新編譯。在使用非典型值或臨時值而不希望覆蓋緩存在內存中的執行計劃時,請使用 RECOMPILE 選項。

9.ENCRYPTION: 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 語句文本的條目。使用 ENCRYPTION 可防止將過程作為 SQL Server 復制的一部分發布。 說明 在升級過程中,SQL Server 利用存儲在 syscomments 中的加密注釋來重新創建加密過程。

10.FOR REPLICATION :指定不能在訂閱服務器上執行為復制創建的存儲過程。.使用 FOR REPLICATION 選項創建的存儲過程可用作存儲過程篩選,且只能在復制過程中執行。本選項不能和 WITH RECOMPILE 選項一起使用。

11.AS :指定過程要執行的操作。

12.sql_statement :過程中要包含的任意數目和類型的 Transact-SQL 語句。但有一些限制。

小結:看過這些基本語法后,下面我就根據語法創建各式的存儲過程。

--------------------------------------------------------------------------------

創建存儲過程

UserAccount

UserIDUserNamePassWordRegisterTimeRegisterIP

12662012-12-316

18552013-01-015

19112013-01-011

20222013-01-012

21332013-01-013

22442013-01-014

23552013-01-015

25772013-01-017

26882013-01-018

NULLNULLNULLNULLNULL

針對上面的表,我使用存儲過程對它做一些操作:

1. 只返回單一記錄集的存儲過程

復制代碼 代碼如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德格县| 若羌县| 灌阳县| 余江县| 怀来县| 洛川县| 黄平县| 上蔡县| 平罗县| 鸡东县| 新密市| 南京市| 平阳县| 杭州市| 新沂市| 六枝特区| 东至县| 吉安市| 侯马市| 迁安市| 辛集市| 漳州市| 山阳县| 突泉县| 玉环县| 乐山市| 阿鲁科尔沁旗| 威海市| 古田县| 民丰县| 喀什市| 峡江县| 项城市| 柘城县| 乌拉特中旗| 黑水县| 武穴市| 金平| 朝阳区| 隆昌县| 宜兰县|