说到sql,无疑存储过程很重要,这篇就和大家讨论储存过程。
1:储存过程
a:不带参数的储存过程
USE testGOCREATE PROCEDURE WLY --储存过程,不带参数ASSELECT * FROM roleGO
b:带参数的储存过程
USE testGOCREATE PROCEDURE WLY1 @A INTAS DECLARE @B INTSET @B=1SET @[email protected]PRINT @AGO
c:带有输出参数的储存过程
USE testGOCREATE PROCEDURE WLY2 @A INT OUTPUT --输出参数值的参数AS DECLARE @B INTSET @B=1select @[email protected]PRINT @AGO
d:存储过程的一些参数
SP_HELP WLY1 --返回储存过程的名称,时间,参数等SP_HELPTEXT WLY1 --返回储存过程的创建语句SP_RENAME WLY,WLY2 --重命名储存过程GO
e:执行储存过程
execute dbo.WLYEXECUTE WLY1 1 --有参数的储存过程DECLARE @C INT --带参数的输出EXECUTE WLY2 @C OUTPUTGO
2:游标
DECLARE C_ROLE CURSOR SCROLLFOR SELECT RID,RNAME FROM ROLEFOR READ ONLYDECLARE @COUNT INT,@VRID INT,@VRNAME VARCHAR(1)OPEN C_ROLEFETCH NEXT FROM C_ROLEINTO @VRID,@VRNAMESET @COUNT=0WHILE @@FETCH_STATUS=0BEGIN PRINT @VRID PRINT @VRNAME PRINT @COUNT SET @[email protected]+1 FETCH NEXT FROM C_ROLE INTO @VRID,@VRNAMEENDCLOSE C_ROLEDEALLOCATE C_ROLEGO
我感觉游标的使用尽量的避免,因为是取出数据再存起来,如果数据量很大的话就不好了。