zoukankan      html  css  js  c++  java
  • sqlserver存储过程学习笔记(一)基础知识篇(全)

      说出来有点丢人,做sqlserver应用系统近一年,竟然没有使用过存储过程,现在就好好的梳理一下对应知识,慢慢让其加入到我的项目中去吧。

      存储过程的优点:1、运行效率高,提供了在服务器端快速执行sql语句的有效途径。2、存储过程降低了客户机和服务器之间的通信量。3、方便实施企业规则。

      (1)创建存储过程

      ①创建一个存储过程,查看00005号课程的选修情况,包括选修该课程学生的学号、姓名和成绩。

       解答:

                  USE SM(数据库名称)

                  GO

                  CREATE PROCEDURE ssc_3

                  AS

                       SELECT Student.SNo,SName,Score

                       FROM Student LEFT JOIN SC ON Student.SNo=SC.SNo

                       WHERE SC.SNo='00005'

                       GO

    按F5键,创建成功

    ②执行存储过程:EXECUTE ssc_3

    (2)使用输入参数

     ①上面建立的存储过程只能对00005号课程的选修情况进行查看,要想对所有课程进行随机查看,需要进行参数的传递

    USE SM

    GO

    CREATE PROCEDURE ssc_4

    @cnumber CHAR(5)

    AS

     SELECT Student.SNo,SName,Score

     FROM Student LEFT JOIN SC ON Student.SNo=SC.SNo

     WHERE SC.SNo=@cnumber

    GO

    ②按位置传递参数

    EXECUTE ssc_4 '00008'

    ③通过参数名传递参数

    EXECUTE ssc_4 

    @cnumber='00008'

     (3)使用默认参数值

    ①执行存储过程ssc_4时,如果没有给出参数,系统会报错。如果希望不给参数时,能查询所有课程的选修情况,则可以使用默认参数来实现

     USE SM 

    GO

    CREATE PROCEDURE ssc_5

    @cnumber CHAR(5) =NULL

    AS 

    IF  @cnumber IS NULL

    BEGIN

    SELECT Student.SNo,SName,Score

    FROM Stuent JOIN SC ON Student.SNo=SC.SNo

    END

    ELSE

    BEGIN

    SELECT Student.SNo,SName,Score FROM Student JOIN SC ON Student.SNo=SC.SNo

    WHERE SC.SNo=@cnumber

    END

    GO

    ②执行下面两条语句,比较执行结果。

    EXECUTE ssc_5

    EXECUTE ssc_5 '00005'

    (4)使用输出参数

    ①创建一个存储过程ssc_6,获得选修某门课程的总人数

    USE SM 

    GO

    CREATE PROCEDURE ssc_6

    @cnumber CHAR(5),@ccount INT OUTPUT

    AS 

    SELECT @ccount=COUNT(*) FROM SC WHERE SC.CNo=@cnumber

    GO

    @执行存储过程ssc_6

    DECLARE @ccount INT

    EXECUTE ssc_6 '00008',@ccount OUTPUT

    SELECT 'the result is',@ccount

    (5)使用返回值

    ①创建一个返回执行状态码的存储过程ssc_7,它接受课程号为输入参数,如果执行成功,返回0;如果没有给出课程号,返回错误码1;如果给出的课程号不存在,返回错误码2;如果出现其他错误,返回错误码3.

    USE SM

    GO

    CREATE PROCEDURE ssc_7

    @cnumber CHAR(5) = NULL

    AS

    IF @cnumber IS NULL

    BEGIN

        PRINT 'error:you must specify a course number.'

        RETURN(1)

        END

    ELSE

    BEGIN

        IF(SELECT COUNT(*) FROM SC WHERE CNo=@cumber)=0

        BEGIN

        PRINT 'error:you must specify a valid Course number'

        RETURN(2)

         END

    END

    SELECT @cnumber AS CNo FROM SC WHERE CNo=@cnumber 

    IF @@error<>0

    BEGIN 

    RETURN(3)

    END

    ELSE

    RETURN(0)

    GO

    执行存储过程ssc_7

    DECLARE @result INT

    EXEC @result ==ssc_7

    SELECT 'the result is',@result

    (6)修改存储过程(sqlserver 2008下)

    在数据库根目录下,打开可编程选项下得存储过程选项,选择要修改的存储过程,右击鼠标,在弹出的对话框中选择修改即可

    (7)查看存储过程。

      执行以下语句,查看存储过程ssc_3 的信息。

    EXEC sp_help ssc_3

    (8)删除存储过程

    执行以下语句,删除存储过程ssc_3

    DROP PROCEDURE ssc_3

  • 相关阅读:
    HTML链接/实施CSS的三种方法
    XML之Well-Formed文档规则
    【摘】SVN提交与版本冲突
    Web开发之404小结
    TCP 连接的要点
    [转] Epoll 相对Poll和Select的优点
    [转] 剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
    GDB调试技巧
    [转] 关于c++的头文件依赖
    [转] Linux中gcc,g++常用编译选项
  • 原文地址:https://www.cnblogs.com/wjcnet/p/3366259.html
Copyright © 2011-2022 走看看