zoukankan      html  css  js  c++  java
  • 07章 存储过程

    一:存储过程的定义:

    在数据库服务器上(DB Server)存储的预先编译好的一堆SQL语句

    是SQL语句和控制语句的预编译集合,保存在数据库里,可由应用程序调用执行,而且允许用户声明变量、逻辑控制语句及其他强大的编译功能。它可以接收参数、输出参数、返回单个或多个结果集及返回值。

    为什么需要存储过程???

       增加数据库的安全性

    二:存储过程的优点:

    ①:执行速度更快

    ②:允许模块化程序设计

    ③:提高系统安全性

    ④:减少网络流通量

    三:存储过程的分类:

    1.系统存储过程:

    以“sp_”开头,并存放在Resource数据库中

    常用的系统存储过程:

    系统存储过程 说明
    sp_databases 列出服务器上的所有数据库信息,包括数据库名称和数据库大小
    sp_helpdb 报告有关指定数据库或所有数据库信息
    sp_renamedb 更改数据库名称
    sp_tables 返回当前环境下可查询的表或视图信息
    sp_columns 返回某个表或视图的列信息,包括列的数据类型和长度等
    sp_help 查看某个数据库对象的信息
    sp_helpconstraint 查看某个表的约束
    sp_helpindex 查看某个表的索引
    sp_stored_procedures 显示存储过程的列表
    sp_password 添加或修改登录账户的密码
    sp_helptext 显示默认值,未加密的存储过程,用户自定义的存储过程。触发器或视图的实际文本

    语法:

    exec [UTE] 存储过程名 [参数值]

    注:如果执行存储过程的语句是批处理中的第一个语句,则可以不指定EXECUTE关键字

    eg:

    sp_databases MySchool

    GO

    2.常用的扩展存储过程

    语法:

    exec xp_cmdshell DOS 命令[no_output]

    注:exec表示调用存储过程,no_output为可选参数,设置执行DOS命令后是否输出返回信息

    3.用户自定义的存储过程

    创建不带参数的存储过程:

    ① 创建存储过程

    语法:

    create  procedure  存储过程名
      
             [{@参数1 数据类型} [=默认值] [output],
    
                 ........,
     
                    {@参数 n 数据类型} [=默认值] [output]
    
             ]
              as
    
              SQL语句

    ② 删除存储过程

    语法:

    drop procedure 存储过程名

    注:参数置于as前,并且变量前不需要加declare关键字

        as后的变量需要declare关键字

    eg:创建一个可以查询所有学生信息的存储过程

    CREATE  PROCEDURE  
    AS
    select * from Student

    创建带输入参数的存储过程:

    ①:创建带参数的存储过程

    如果存储过程的参数后面有"output"关键字,则表示此参数为输出参数;否则视为输入参数,输入参数还可以设置为默认值。

    ②:执行带参数的存储过程

    语法:

    exec [返回变量=] 存储过程名 [@参数1=]参数值1 [output] |[default],
    
    .......
    
    [@参数1=]参数值n [output] |[default]

    eg:

    从Result,Student表中查询成绩大于90分的学生的  姓名和成绩:

    四:带output参数的存储过程:

    五:处理错误信息

    raiserror语句:

    语法:

    raiserror ({msg_id | msg_str}{,severity,state} [with option[,....n]])

    分析:利用raiserror语句生成用户定义的错误信息并返回到应用程序。

    六:补充

    TruncateDelete 三点区别:

    1.   Truncate不能加where,而delete可以

    2.   Truncate删除速度快,不记录日志。不能恢复数据

          而delete删除速度慢,记录日志,可以恢复数据

    3.   Truncate 截断表。ID从1开始编号

          delete 不会从1开始编号

  • 相关阅读:
    Light oj 1197
    UVA 11426 GCD
    Light oj 1236
    Light oj 1138
    Light oj 1214-Large Division (同余定理)
    Light oj 1234
    HDU
    ZOJ 3469 Food Delivery(* 区间DP 总结)
    二分查找整理
    zoj 3965 Binary Tree Restoring(* dfs)
  • 原文地址:https://www.cnblogs.com/WJ-163/p/5276302.html
Copyright © 2011-2022 走看看