1、Create、Alter和Drop
CREATE PROCEDURE USP_CategoryList AS SELECT CategoryID,CategoryName FROM Category
在创建存储过程时,应该使用一致的规范来命名存储过程,而不要使用sp_,使用sp_只会导致名称冲突和混乱。可以使用usp_作为存储过程名的前缀,但即使不使用任何前缀,也比使用sp_好。
2、返回记录集
EXEC USP_CategoryList
3、编译存储过程
EXEC sp_recompile USP_CategoryList
4、查看存储过程
sp_helptext USP_CategoryList
5、加密存储过程
CREATE PROCEDURE USP_CategoryList WITH ENCRYPTION AS SELECT CategoryID,CategoryName FROM Category
6、输入参数
CREATE PROCEDURE USP_CategoryList ( @CategoryID INT ) AS SELECT CategoryID,CategoryName FROM Category WHERE CategoryID = @CategoryID
EXEC USP_CategoryList 1
EXEC StoredProcedure @Parameter1 = n, @Parameter2 = 'n'
7、参数的默认值
调用存储过程时,必须为所有参数指定值,除非创建参数有默认值。
CREATE PROCEDURE StoredProcedure ( @Variable DataType = DefaultValue )
8、输出参数
使用output定义输出参数,在不需要返回整个记录集时,输出参数非常适合用于返回单个数据单元。返回单行数据时,使用输出参数比使用记录集快得多。
CREATE PROCEDURE USP_CategoryList ( @CategoryID INT, @CategoryName VARCHAR(50) OUTPUT ) AS SELECT @CategoryName = CategoryName FROM Category WHERE CategoryID = @CategoryID
DECLARE @CategoryName VARCHAR(50) EXEC USP_CategoryList @CategoryID = 1, @CategoryName OUTPUT PRINT @CategoryName
9、return关键字
return关键字无条件地终止存储过程的执行,并向调用它的批处理或客户返回一个值。
使用返回值来指出运行是失败还是成功,而不是使用它返回实际数据。如果只需要返回一个值而不是这个数据集,可以使用输出参数。
EXEC @IntLocalVariable = storedProcedureName
CREATE PROCEDURE USP_IsItOK ( @OK VARCHAR(10) ) AS IF @OK = 'OK' RETURN 0 ELSE RETURN -100
DECLARE @ReturnCode INT EXEC @ReturnCode = USP_IsItOK 'OK' PRINT @ReturnCode EXEC @ReturnCode = USP_IsItOK 'NotOK' PRINT @ReturnCode