在程式設計的時候,出于安全、效率和擴充性方面的考慮,我們會把很多資料操作都封裝為存儲過程。
存儲過程是已儲存的 Transact-SQL 語句集合,或對 Microsoft .NET Framework 公共語言運作時 (CLR) 方法的引用,可接收并傳回使用者提供的參數。可以建立過程供永久使用,或在一個會話(局部臨時過程)中臨時使用,或在所有會話(全局臨時過程)中臨時使用。
啟動 SQL Server 的一個執行個體時,也可以建立并自動運作存儲過程。
存儲過程現在可以利用T-SQL和托管代碼兩種方式編寫。下面我們主要看看如何使用T-SQL語句快速地編寫存儲過程
我們來看一下基本文法
CREATE { PROC | PROCEDURE } [schema_name . ] procedure_name [ ; number ] [ { @ parameter [ type_schema_name . ] data_type } [ VARYING ] [ = default ] [ OUT | OUTPUT ] ] [ , ...n ]
[ WITH <procedure_option> [ , ...n ] ]
[ FOR REPLICATION ]
AS { <sql_statement> [;][ ...n ] | <method_specifier> }
[;]
<procedure_option> ::= [ ENCRYPTION ] [ RECOMPILE ] [ EXECUTE_AS_Clause ]
<sql_statement> ::=
{ [ BEGIN ] statements [ END ] }
<method_specifier> ::=
EXTERNAL NAME assembly_name . class_name . method_name
但是,是不是說我們真的要一個一個去編寫呢?那樣的确很繁瑣,尤其對于業務邏輯不是很複雜的情況下。
第一個方法:善用SQL SERVER自帶的工具。以SQL Server 2005為例,我們可以通過SQL SERVER Management Studio的上下文菜單來生成代碼
INSERT INTO [OrderDB].[dbo].[OrderDetails]
([OrderID]
,[LineNumber]
,[ProductID]
,[UnitPrice]
,[Quantity])
VALUES
(<OrderID, int,>
,<LineNumber, tinyint,>
,<ProductID, int,>
,<UnitPrice, decimal(18,2),>
,<Quantity, int,>)
第二個方法:善用第三方工具。我這裡推薦一個産品是CodeSmith,它有一個模闆,可以在幾秒鐘之内為一個資料庫所有表生成增删改查的存儲過程