zoukankan      html  css  js  c++  java
  • 好多人都说存储过程很难?认真看这篇文章就够了

    何为存储过程?

    存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样。

    每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它学习的欲望,存储过程也不例外,那么存储过程有什么优点?

    • 执行速度更快

    • 允许模块化程序设计 

    • 提高系统安全性

    • 减少网络流通量

    看完优点之后,我们再来看看存储过程的分类有哪些,然后我们按照分类一个一个的写(演示)。

    • 系统存储过程

      •     系统存储过程的名称一般以“sp_”开头

      •     由SQLServer创建、管理和使用

      •     存放在Resource数据库中

      •     类似C#语言类库中的方法

    • 扩展存储过程

      •     扩展存储过程的名称通常以“xp_”开头

      •     使用编辑语言(如C#)创建的外部存储过程

      •     以DLL形式单独存在

    • 用户自定义存储过程

      •     由用户在自己的数据库中创建的存储过程

      •     类似C#语言中用户自定义的方法

    系统存储过程

    (上面已经解释过了,现在直接动手操作)

    下面我们演示一下常用的系统存储过程:

    1.列出所有的数据库

    exec sp_databases

    2.修改数据库的名称:

    exec sp_renamedb 'jobs','job'

    3.当前数据库的所有表(包括视图、表)

    exec sp_tables

    4.返回student表的列的信息

    exec sp_columns student

    5.查看表student的信息

    exec sp_help student

    6.查看表的约束(默认约束,唯一约束)

    exec sp_helpconstraint student

    7.查看当前数据库中的存储过程

    exec sp_stored_procedures

    扩展存储过程

    (主要就演示一个xp_cmdshell)

    xp_cmdshell

    • 可以执行dos命令下的而一些操作

    •  以文本方式返回任何输出

    下面演示一下该扩展存储过程,查看某个文件夹:(D://DB)

    /*若xp_cmdshell座位服务器安全配置的一部分而被关闭,需要先启用*/
    exec sp_configure 'show advanced options',1   --显示高级配置信息
    go 
    exec sp_configure 'xp_cmdshell',1    --打开xp_shell选项
    go 
    reconfigure --重新配置
    go 
    --查看某个文件夹:(D://DB)
    exec xp_cmdshell 'dir D:\DB\'

    自定义存储过程

    已知有两表,Student学生表和Grade年级表,表中数据如下:(仔细看,这是铺垫)

    Student表

    Grade表

    1.无参的存储过程(查询青鸟一班的所有学生姓名);

    创建存储过程:

    go
    create proc job_GetSname
    as 
    select sname from student where sgid = (select gid from grade where gname = '青鸟一班')
    go

    调用存储过程:

    exec job_GetSname

    运行结果:

    2.带参数的存储过程(根据输入的年级名称查询该年级所有的学生信息)

    创建存储过程:

    go
    create proc job_Login
    @gname varchar(50)
    as
    select sname from student where sgid = (select gid from grade where gname = @gname)
    go

    调用存储过程:

    exec job_Login '青鸟一班'

    运行结果:

    3.带输出参数的存储过程(根据学生姓名返回年级名称)

    go
    create proc job_GetGName
    @sname varchar(50), --输入学生姓名
    @gname varchar(50) output    --输出年级名称
    as
    select @gname = gname from grade where gid = (select sgid from  student where sname = @sname)
    go

    调用存储过程:

    declare @gname varchar(50) --声明一个变了接收年级名称
    exec job_GetGName '李太白', @gname output 
    print '所在年级是:'+@gname

    运行结果:

    JavaScript实现四则运算

    2020-06-12

    sql server高级查询,看这篇文章就够了

    2020-06-09

    Linux基础知识之【简介与安装】

    2020-06-08

    老师,我没有学过事务……同学你过来,你看老师手里拿的是什么?

    2020-06-11


  • 相关阅读:
    关于一些无法被代替的宏定义函数
    error in invoking target 'mkldflags ntcontab.o nnfgt.o' of makefile
    ajax——XMLHttpRequest
    Readprocessmemory使用方法
    互信息的概念和定理
    音频编辑大师 3.3 注册名称 许可证
    youwuku和koudaitong以及weimeng差异
    delphi webbrowser 经常使用的演示样本
    大约ActionContext.getContext()使用体验
    Codeforces Round #243 (Div. 1)——Sereja and Two Sequences
  • 原文地址:https://www.cnblogs.com/a1111/p/14877458.html
Copyright © 2011-2022 走看看