繼續總結存儲過程,在寫存儲過程中發現很多問題,雖然有些東西能看的懂,但是在寫的時候想不起了用,用起來也不順手。
@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,如需轉載請自行聯系原作者