• 存储过程的笔记


    存储过程 分为系统存储过程 和用户自定义村粗过程。

    系统存储过程只能调用不能自己定义。

    存储过程的好处:1.提高安全性 2.减少网络流量 3.模块化编程 4,执行速度快

    ---------------常用的系统存储过程---------

    ----------------系统存储过程-----------------------
    --查询指定表的列的信息
    exec sp_columns 'CardInfo'
    --查询某个表的所有的信息
    exec sp_help 'cardInfo'
    --查询所有的的数据库
    exec sp_databases
    --查询某个表的约束
    exec sp_helpconstraint 'cardInfo'
    --列举指定数据库或所有的数据库信息 如果没有指定数据库的话 值所有的数据库
    -- 否则是对应的数据库的所有信息
    exec sp_helpdb 'NetBarDB'
    exec sp_helpdb
    --显示数据库对象(存储过程、触发器视图)的定义文本
    --exec sp_helptext '对象的名称'
    --查询指定表的索引信息
    exec sp_helpindex 'cardInfo'

    --dos 命令 xp_cmdhell

    ----------------------自定义存储过程----------------------------------------

      无返回值的  存储过程的语法
        crate procedure 存储过程的名

     [参数] 
        as
          sql 语句
        go
      --输入带参数的存储过程
    /*
    create procedure 存储过程的名
    @参数1名  数据类型[= 默认值]

    @参数n名  数据类型[= 默认值]
    as    
        sql语句、、
    go
    */
    use NetBarDB
    go
    --判断储存过程是否存在 如果存在 就删除
    if exists (select 1 from sys.sysobjects where [name]='proc_1')
     drop procedure proc_1
     go
     create procedure proc_1
     @PCUse int --输入参数
     as
        select PCId as '电脑编号',
        '使用状态'=case
                    when @PCUse =1then '使用'
                    when @PCUse =0 then'空闲'
                    end,
        PCNote as '备注'
        from PCInfo
     go
     exec proc_1 0

    ------类型转换---
     --declare @a int
    --set @a =22
    --  declare @q  char   =convert(char ,@a)
    --print @q




     
    --创建带输出参数的存储过程
    use NetBarDB
    go
    --判断储存过程是否存在
    if exists (select 1 from sys.sysobjects where [name]='GetBalance')
    begin
        drop procedure GetBalance
    end
    go
     create procedure  GetBalance
     @cardId int, --卡号
     @balance int output--使用output关键字
     as
     --为输出参数赋值
     select @balance = CardBalance from CardInfo where cardId=@cardId
     go
     --调用储存
     declare @balance int --定义变量用于存放储存过程返回的结果
     --查询卡号的余额 输出参数在调用时也使用uotput 关键字
     exec GetBalance 4,@balance output
     
     if (@balance >0)
      print '余额为 '+convert(varchar(5),@balance)+' 此卡可用'
    else
      print '余额为  '+convert(varchar(5),@balance)+'   此卡不可用'
     
     
     
    --------------RETURN 的使用 ----------------------------
    --reture 的执行终止 存储过程的执行或返回数据
    USE NetBarDB
    GO
    IF EXISTS(SELECT * FROM sys.sysobjects WHERE [NAME]='add_PC')
    BEGIN
        DROP PROC add_PC
    END
    GO
    --创建存储过程
    CREATE PROC add_PC
        @PCNoder varchar(20)
        
    AS
        --插入数据
        insert into PCInfo VALUES(0,@PCNoder)
        return @@identity
    GO
    --调用存储过程
    DECLARE @pcid int--声明变量 用于保存存储过程的返回值
    exec @pcid =add_PC --新添加的电脑
    ---------------错误信息的处理-------------
    --RAISERROR 返回 用户定义错误信息
    --语法 raiserror (定义错误信息 ,错误的级别,错误的状态)
    --在存储过程发生错误是  @@ERROR 的值大于零 否则正常执行

    ----------resierror 错误信息的处理-------------------------------
    USE NetBarDB
    GO
    --IF EXISTS (SELECT * FROM sys.sysobjects WHERE [name] ='PROC_ADDBALANCE')
    --    DROP PROC PROC_ADDBALANCE
    --GO
    --CREATE PROC PROC_ADDBALANCE
    --    @CARDNUMBER VARCHAR(20),
    --    @MONEY INT
    --AS
    --    IF NOT EXISTS (SELECT 1 FROM cardInfo WHERE CardNumber= @CARDNUMBER )
    --    BEGIN
    --        DECLARE @MSG VARCHAR(100)--用于存放错误的提示信息
    --        set  @MSG ='充值失败,卡号:'+convert(varchar(20),@MSG)
    --        RAISERROR(@MSG,16,1)
    --        RETURN;
    --    END    
    --    --判断充值的我金额是否大于0
    --    IF(@MONEY <=0)
    --    BEGIN
    --        RAISERROR('充值失败 金额必须大于0元',16,1)
    --        RETURN;
    --    END
    --    --进行充值,修改余额
    --    UPDATE cardInfo SET CardBalance=CardBalance + @MONEY WHERE CardNumber=@CARDNUMBER
    --    --
    --    IF(@@ERROR>0)
    --    BEGIN
    --        RAISERROR('修改余额失败',16,1);--输出错误信息
    --    END        
    --    ELSE
    --        SELECT '充值成功 卡号'+CONVERT (VARCHAR(20),@CARDNUMBER)+'充值'+CONVERT(VARCHAR(5),@MONEY)+'元'AS '充值的钱'
    --GO


  • 相关阅读:
    laravel
    composer lavarel 安装
    phpstudy 500 Internal Server Error 解决办法
    阿里云php-7.2.12 安装
    mysql索引
    服务器配置-双机热备
    layui动态数据表格-分页
    layui 笔记
    Thinkphp5.1 模板路径报错
    window/linux composer安装/卸载
  • 原文地址:https://www.cnblogs.com/cl1006/p/4331122.html
Copyright © 2020-2023  润新知