天天看點

存儲過程總結 2

繼續總結存儲過程,在寫存儲過程中發現很多問題,雖然有些東西能看的懂,但是在寫的時候想不起了用,用起來也不順手。

@FDeptID=isnull(FDeptID,0) 

這裡用到的是isnull函數,isnull的意思是在FDeptID為空的時候,把相應的值替換為FDeptID的值,這裡如果FDeptID字段為空,直接替換為0,如果不為空則傳回false

CONVERT(nvarchar, GETDATE(),120)

設定時間格式,根據最後面資料的不同,時間顯示的方式方式不同,這種方式顯示的結果是:

2010-11-17 20:46:23

這裡用到的是類型轉換,把@finterid的類型轉化為nvarchar并設定nvarchar 的空間大小

CONVERT(nvarchar(10),@finterid)

這些是 SQL-92 設定語句,使 SQL Server 2000/2005 遵從 SQL-92 規則。 

當 SET QUOTED_IDENTIFIER 為 ON 時,辨別符可以由雙引号分隔,而文字必須由單引号分隔。當 SET QUOTED_IDENTIFIER 為 OFF 時,辨別符不可加引号,且必須符合所有 Transact-SQL 辨別符規則。 

SQL-92 标準要求在對空值進行等于 (=) 或不等于 (<>) 比較時取值為 FALSE。當 SET ANSI_NULLS 為 ON 時,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍傳回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會傳回零行。 

當 SET ANSI_NULLS 為 OFF 時,等于 (=) 和不等于 (<>) 比較運算符不遵從 SQL-92 标準。使用 WHERE column_name = NULL 的 SELECT 語句傳回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 語句傳回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句傳回所有不為 XYZ_value 也不為 NULL 的行。

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

@@ERROR  這個是全局變量   如果執行有錯誤的話   這個變量會大于0 ,如果上一個 Transact-SQL 語句執行成功,@@ERROR 系統函數将傳回 0;如果該語句生成錯誤,@@ERROR 将傳回錯誤号。每個 Transact-SQL 語句完成時,@@ERROR 的值都會更改。

輸出@execsql結果

SELECT @intErrorCode = @@ERROR

執行動态sql語句,在執行動态的sql語句是execute方式必須把要執行的sql用括号括起來,但是用exec sp_executesql 就可以不用加括号了

PRINT @execsql       

execute (@execsql) 

Begin end 就像是我們在寫方法時用的大括号,裡面就是要寫的sql語句和其他内容

BEGIN

   SELECT @managerID = ManagerID 

   FROM HumanResources.Employee 

   WHERE EmployeeID = @employeeID

END

   IF ((SELECT COUNT(*)

   FROM Person.Address

   WHERE City = @cityName) > 1)

   RETURN 1

ELSE

   RETURN 0

if else 同樣适用與存儲過程,當然還有while ,return 傳回值等等

擷取 @cityName的位元組數,例如:

如果@cityName的位元組數大于1,則執行自加1

本文轉自shenzhoulong  51CTO部落格,原文連結:http://blog.51cto.com/shenzhoulong/441265,如需轉載請自行聯系原作者