zoukankan      html  css  js  c++  java
  • 数据库

    概述:

      首先,需要了解存储过程的的常见类型  ——  从参数的角度分为有参数的存储过程和无参数的存储类型,从返回结果的角度分为“返回结果集”、“使用 output 参数”、“通过 return 参数”。

      语法:

       Create proc procedure_name  
       [ { @parameter data_type } [ varying ] [ = default ] [ OUTPUT ]     ] [ ,...n ]           [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]  [ FOR REPLICATION ]      AS 
       sql_statement [ ...n ]

    创建无参数的存储过程

        create proc StuProc
        as              //此处 as 不可以省略
        begin           //begin  end 是一对,不可以只写其中一个,但可以都不写
          select S#,Sname,Sage,Ssex from student
        end
        go

    创建有参数的存储过程

      全局变量

         全局变量也称为外部变量,它的作用域为从变量定义处开始,到本程序文件的末尾。

       选出指定姓名的学生信息:

        create proc StuProc
        @sname varchar(100) 
        as 
        begin
          select S#,Sname,Sage,Ssex from student where sname=@sname
        end
        go
    
        exec StuProc '赵雷'     //执行语句

        上面是在外部给变量赋值,也可以在内部直接给变量设置默认值

          create proc StuProc
          @sname varchar(100)='赵雷'
          as 
          begin
            select S#,Sname,Sage,Ssex from student where sname=@sname
          end
          go
    
          exec StuProc

       也可以把变量的内容输出,使用 output

        create proc StuProc
        @sname varchar(100),
        @IsRight int output //传出参数
        as 
        if exists (select S#,Sname,Sage,Ssex from student where sname=@sname)
          set @IsRight =1
        else
          set @IsRight=0
        go
    
        declare @IsRight int 
        exec StuProc '赵雷' , @IsRight output
        select @IsRight

      以上是全局变量,下面来了解局部变量

        局部变量也称为内部变量,局部变量必须先用 declare 命令定义后才可以使用。 其作用域仅限于函数内部,离开该函数后再使用这种变量是非法的。

        局部变量的定义  declare {@变量名  数据类型}

        局部变量的赋值方法  set {@变量名=表达式} 或者 select {@变量名=表达式}

        局部变量的显示:  select  @变量名

      (使用局部变量查询指定姓名的学生信息)

        create proc StuProc
        as 
        declare @sname varchar(100)
        set @sname='赵雷'
        select S#,Sname,Sage,Ssex from student where sname=@sname
        go
    
        exec StuProc

      返回局部变量的数据(将局部变量的数据显示出来)

        create proc StuProc
        as 
        declare @sname varchar(100)
        set @sname=(select Sname from student where S#=01)
        select @sname
        go
    
        exec StuProc

    从存储过程返回结果有三种形式:

      返回结果集(一列或多列,单行或多行,通过 select 子句)

      使用 output 参数

      通过 return 参数

        参数的传递

          ① 输入参数: 允许调用方将数据值传递到存储过程

          ② 输出参数: 允许存储过程或游标变量传递回调用方

          每个存储过程都会向调用方返回一个整数返回代码,如果存储过程没有显式设置返回代码的值,则返回代码为0

     

    调用存储过程——输出参数

        返回结果集:

            AS

            select  au_lname  from  authors

            GO

          或:

            AS

            declare  @au_lname(20)

            select  @au_lname = au_lname  from  authors  where  AU_ID = '172-32-1176'

            GO        //结果集多个的变量值为最后一个

        使用 output 参数:

            必须在 create proc 语句最后指定关键字 output ,否则回产生一个错误(text 类型数据不能作为 output 参数输出)

        用 return 语句返回值: (返回值为整数)

          

        或:

  • 相关阅读:
    JVM之GC调优
    JVM的栈、堆
    SpringMVC及其HandlerMapping、HandlerInterceptor、HandlerAdapter等组件的原理解析
    静态代理、动态代理和CGLIB,SpringAOP中的代理
    cmd删除文件夹
    vue-router命名视图+路由嵌套
    Vue实现长按事件
    [SparkSQL] hive.exec.max.dynamic.partitions配置不起作用
    Excel分数转为百分数
    Hadoop YARN主资源调度算法
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/7131132.html
Copyright © 2011-2022 走看看