SQLServer的存储过程

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集

它存储在数据库中,一次编译后有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它

存储过程是数据库中的一个重要对象

优点 

1.执行速度更快 – 在数据库中保存的存储过程语句都是编译过的

2.允许模块化程序设计 – 类似方法的复用

3.提高系统安全性 – 防止SQL注入

4.减少网络流通量 – 只要传输存储过程的名称

系统存储过程一般以sp开头,用户自定义的存储过程一般以usp开头

语法

     create proc 存储过程名


      @参数1 数据类型 [=默认值] [output], -- "[" 里面的内容表示可选项


      @参数2 数据类型 [=默认值] [output],


      ...


      as


      SQL语句



    案例:根据姓名和年龄查询学生信息

      -- 1 定义存储过程:


        create proc usp_StudentByGenderAge


        @gender nvarchar(10) [='男'],


        @age int [=30]


        as


        select * from MyStudent where FGender=@gender and FAge=@age





      -- 2 执行存储过程:


        exec usp_StudentByGenderAge -- 调用默认的参数


        exec usp_StudentByGenderAge '女',50 -- 调用自己指定的参数


        exec usp_StudentByGenderAge @age=50,@gender='女' -- 或者指定变量名



      案例:带输出参数的存储过程


        -- 1 定义存储过程:


        create proc usp_StudentByGenderAge


        @gender nvarchar(10) [='男'],


        @age int [=30],


           @recorderCount int output --加output表示该参数是需要在存储过程中赋值并返回的


          as


          select * from MyStudent where FGender=@gender and FAge=@age


          set @recorderCount=(select count(*) from MyStudent where FGender=@gender and FAge=@age)


          


        -- 2 执行存储过程:


        declare @count int


        exec usp_StudentByGenderAge @recorderCount=@count output


        print @count





        output参数的目的,就是调用者需要传递一个变量进来,然后在存储过程中为该变量完成赋值工作,存储过程执行完成以后,将执行的对应结果返回给传递进来的变量



        相关文章