当前位置:文档之家› 存储过程书写范例

存储过程书写范例

--存储过程的创建和调用演示
-------------------------------------
--1.不带参数的存过过程的创建
CREATEPROCEDURE PRO_WITH_NO_PARAM
AS
BEGIN--BEGIN 可省略
SELECT*FROM C;
END--END 可省略
--调用
EXEC PRO_WITH_NO_PARAM;
------------------------------------
--2.带参数的存储过程
CREATEPROCEDURE PRO_WHIT_PARAM
(
@Sno char(5),
@Cno char(1)
)
AS
BEGIN
SELECT*FROM SC WHERE Sno=@Sno AND Cno=@Cno
END
--调用
EXEC PRO_WHIT_PARAM '09002','3'
---------------------------------------
--3.带一个参数的多表查询存储过程
CREATEPROCEDURE PRO_QUERY_DOUBLE_TABLE
(
@Sname_IN char(6)
)
AS
BEGIN
SELECT Sname,Ssex,Sage,Sdept,Cno,Grade FROM S STU ,SC SCTU WHERE STU.Sno = SCTU.Sno AND Sname = @Sname_IN
END
--执行
EXEC PRO_QUERY_DOUBLE_TABLE '姑姑'
-----------------------------------------
--4.创建一个插入表的存储过程
CREATEPROCEDURE PRO_INSERT
(
@Sno_IN CHAR(5),
@Cno_IN CHAR(1),
@Grade_IN int
)
AS
BEGIN
INSERTINTO SC (Sno,Cno,Grade)values(@Sno_IN,@Cno_IN,@Grade_IN)
END
--执行
EXEC PRO_INSERT '09003','3','99'
--------------------------------------------------
--5.默认参数的存储过程
CREATEPROCEDURE PROC_WHIT_DEFAULT_PARAM
(
@Sno_IN CHAR(5)='09003',
@Cno_IN CHAR(1)='3'
)
AS
BEGIN
SELECT*FROM SC WHERE Sno=@Sno_IN AND Cno=@Cno_IN
END
--执行[注意:这种存储过程有三种方式进行调用,全部使用默认值,部分使用默认值,全部使用输入值]
EXEC PROC_WHIT_DEFAULT_PARAM
EXEC PROC_WHIT_DEFAULT_PARAM '09002'
EXEC PROC_WITH_DEFAULT_PARAM '09002','3'
--6.带输出参数的存过过程
CREATEPROCEDURE PROC_WHIT_OUT_PARAM
(
@Grade_OUT INTOUTPUT
)
AS
BEGIN
SELECT @Grade_OUT = Grade FROM SC WHERE Sno='09003'AND Cno='3'
END
DECLARE @Grade_RESULT INT--声明一个变量来存储输出参数输出的值
EXEC PROC_WHIT_OUT_PARAM @Grade_OUT = @Grade_RESULT OUTPUT
PRINT @Grade_RESULT
--------------------------------
--写控制逻辑
IF @Grade_RESULT >=90
PRINT'优秀'
ELSEIF(@Grade_RESULT < 90 AND @Grade_RESULT >85)
PRINT'良好'
ELSE
PRINT'好'
---------------------------------
SELECT*FROM SC
--存储过程的状态值
--7.使用一个值来保存执行后的状态
CREATEPROCEDURE PROC_WITH_STATUS_VALUE
(
@Sno_IN CHAR(5)
)
AS
BEGIN
SELECT*FROM SC WHERE Sno = @Sno_IN
END
--通常的执行过程
EXEC PROC_WITH_RETURN_VALUE '09003'
--使用记录状态的执行
DECLARE @STATUS INT
EXEC @STATUS = PROC_WITH_STATUS_VALUE @Sno_IN ='09003' PRINT @STATUS
IF(@STATUS = 0)
PRINT'执行成功'
ELSE
PRINT'执行失败'
--存储过程的返回值
CREATEPROCEDURE PROC_WITH_RETURN_VALUE
(
@Sno_IN CHAR(5)
)
AS
BEGIN
DECLARE @GRADE_RESULT INT
SELECT @GRADE_RESULT = Grade FROM SC WHERE Sno = @Sno_IN IF @GRADE_RESULT >90
RETURN 1
ELSE
RETURN 2
END
--执行存储过程
DECLARE @STATUS INT
EXEC @STATUS = PROC_WITH_RETURN_VALUE @Sno_IN ='09003' PRINT @STATUS
IF @STATUS = 1
PRINT'优秀'
ELSEIF @STATUS =2
PRINT'良好'
--8.输入输出参数的存储过程
CREATEPROCEDURE PROC_WITH_IN_AND_OUT_PARAM
(
@Sno_IN CHAR(5),
@Grade_OUT INTOUTPUT
)
AS
BEGIN
SELECT @Grade_OUT = Grade FROM SC WHERE Sno = @Sno_IN
END
--执行存储过程
DECLARE @Grade_RESULT INT
EXEC PROC_WITH_IN_AND_OUT_PARAM @Sno_IN ='09003',@Grade_OUT = @Grade_RESULT OUTPUT
PRINT @Grade_RESULT
SELECT*FROM SC;。

相关主题