数据库基础介绍(5)SQL存储过程详细介绍及语法

目录

一、简介

二、实例

1.不带参数的存储过程

2.数据查询功能不带参数的存储过程

 3.带有输入参数的存储过程

4.求阶乘之和 

5.带有输入参数的数据查询功能的存储过程

6. 带有条件判断的插入功能的存储过程

7.储存过程的自动执行

8. 监控存储过程


-注意:存储过程并不推荐在开发中使用,某里巴巴制定的Java开发宝典中明令禁止使用存储过程。

一、简介

创建存储过程

  SQL Server创建存储过程:

    create procedure 过程名

      @parameter 参数类型

      @paramater 参数类型  

    as

    begin

    end

执行存储过程

  execute 过程名

二、实例

1.不带参数的存储过程

create procedure proc_sql1
as
begin
    delclare @i int
    set @i = 26
    while @i <1
        begin
            print char(ascii('a') + @i) + '的ASCII码是:' + cast(ascii('a') + @i as varchar(5))

            set @i  = @i +1
        end
end
exec proc_sql1

  输出结果:

1 a的ASCII码是: 97

 2 b的ASCII码是: 98  
 3 c的ASCII码是: 99  
 ~~~~~
 26 z的ASCII码是:122

2.数据查询功能不带参数的存储过程

 

create procedure proc_sql2
as
begin
    select * from employee where  salary > 2000
end
execute proc_sql2

 在存储过程中可以包含多个select语句,显示姓名中含有“张”字的职工信息及其所在的仓库信息

create procedure pro_sql3asbegin    
        select * from employee where name like '%张%'    
        select * from warehouse where warehouseNo in (select warehouse from employee where name like '%张%')
endgoexecute pro_sql3

 

 3.带有输入参数的存储过程

  找出三个数字中最大的数

create proc proc_sql4

@num1 int,
@num2 int,
@num3 int

as
begin
  declare @max int

  if @num1>@num2
    set @max = @num1
  else
    set @max = @num2
  if @num3 > @max
    set @max = @num3
  print '3个数的中最大的数字是:'  +  cast (@max as varchar (20) )
end

execute proc_sql4  3 , 4 ,5

 

4.求阶乘之和 

alter proc proc_sql5
    @dataSource int
as
begin

    declare @sum int ,@temp int, @tempSum int
    set @sum = 0
    set @temp = 1
    set @tempSum = 1
    while @temp <= @dataSource
         begin
            set @tempSum = @tempSum * @temp
            set @sum = @sum + @tempSum
            set @temp = @temp +1
        end
       print cast ( @dataSource as varchar(50) ) + '的阶乘之和为:' + cast (@sum as varchar(50))

end
execute proc_sql5  5

  

5.带有输入参数的数据查询功能的存储过程

create proc proc_sql6

    @minSalary int,
    @maxSalary int

as
begin
    select * from empolyee where salary > @minSalary and salary< @maxSalary
end
execute proc_sql6 8000,10000

  

6. 带有条件判断的插入功能的存储过程

create proc proc_sql7

    @id varchar(30),
    @deptNo varchar(30),
    @name varchaer(50),
    @sex varchar(10),
    @salary int(10)

as
begin

    if Exists (select * from employee where id = @id)
        print ‘该员工号已经存在,请输入正确的id’
     else
        begin    
            if(Exists (select * from dept where de))

 

7.储存过程的自动执行

  使用sp_procoption系统存储过程即可自动执行一个或者多个存储过程,其语法格式如下:

  sp_procoption [@procName=] 'procedure', [@optionName=] 'option', [@optionValue=] 'value'

    各个参数含义如下:

         [@procName=] 'procedure': 即自动执行的存储过程

         [@optionName=] 'option':其值是startup,即自动执行存储过程

         [@optionValue=] 'value':表示自动执行是开(true)或是关(false)

                sp_procoption @procName='masterproc', @optionName='startup', @optionValue='true' 

  利用sp_procoption系统函数设置存储过程masterproc为自动执行

 

8. 监控存储过程

可以使用sp_monitor可以查看SQL Server服务器的各项运行参数,其语法格式如下:

     sp_monitor

     该存储过程的返回值是布尔值,如果是0,表示成功,如果是1,表示失败。该存储过程的返回集的各项参数的含义如下:

      *last_run: 上次运行时间

      *current_run:本次运行的时间

      *seconds: 自动执行存储过程后所经过的时间

      *cpu_busy:计算机CPU处理该存储过程所使用的时间

      *io_busy:在输入和输出操作上花费的时间

       *idle:SQL Server已经空闲的时间

       *packets_received:SQL Server读取的输入数据包数

       *packets_sent:SQL Server写入的输出数据包数

       *packets_error:SQL Server在写入和读取数据包时遇到的错误数

       *total_read: SQL Server读取的次数

       *total_write: SQLServer写入的次数

       *total_errors: SQL Server在写入和读取时遇到的错误数

       *connections:登录或尝试登录SQL Server的次数

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页