.COMMANDTYPE = 4 '表明这是一个存储进程
.PREPARED = TRUE '要求将SQL命令先行编译
'返回值要最先被声明
.PARAMETERS.APPEND .CREATEPARAMETER("RETURN",2,4)
'以下两参数的声明顺序也做相应颠倒
.PARAMETERS.APPEND .CREATEPARAMETER("@USERNAME",200,2,40)
.PARAMETERS.APPEND .CREATEPARAMETER("@USERID",3,1,4,USERID)
.EXECUTE
END WITH
IF MYCOMM(0) = 1 THEN
USERNAME = MYCOMM(1)
ELSE
USERNAME = "该用户不具有"
END IF
SET MYCOMM = NOTHING
6. 同时返回参数和记录集的存储进程
有时候,我们需要存储进程同时返回参数和记录集,比如在利用存储进程分页时,要同时返回记录集以及数据总量等参数。以下给出一个进行分页处理的存储进程:
/*SP6*/
CREATE PROCEDURE DBO.GETUSERLIST
@IPAGECOUNT INT OUTPUT, --总页数
@IPAGE INT, --当前页号
@IPAGESIZE INT --每页记录数
AS
SET NOCOUNT ON
BEGIN
--创建临时表
CREATE TABLE #T (ID INT IDENTITY, --自增字段
USERID INT,
USERNAME VARCHAR(40))
--向临时表中写入数据
INSERT INTO #T
SELECT USERID,USERNAME FROM DBO.[USERINFO]
ORDER BY USERID
--取得记录总数
DECLARE @IRECORDCOUNT INT