sql server学习笔记——批处理语句、存储过程

目录

批处理语句

1、批处理语句简介

示例一:

示例二:

存储过程

一、什么是存储过程

1、存储过程的简介

2、存储过程包含的内容

3、存储过程的优点

4、存储过程的分类

系统存储过程:

用户定义存储过程

5、常用的系统储存过程

(1)一般常用的存储过程

(2)xp_cmdshell

二、创建存储过程

1、定义存储过程的语法

2、不带参数的存储过程

3、带参数额存储过程


友情链接视频:SQLServer教程

批处理语句

1、批处理语句简介

  • 批处理是包含一个或多个SQL语句的组,从应用程序一次性地发送到SQL Server执行;
  • SQL Server将批处理语句编译成一个壳执行单元,此单元称为执行计划。执行计划中的语句每次执行一条。

示例一:

select * from stulnfo
select * from stuMarks
UPDATE stuMarks
    SET writtenExam=writtenExam+2
GO
  • GO是批处理的标志,表示SQL Server将这些T-SQL语句编译为一个执行单元,提高执行效率;
  • 一般是将一些逻辑相关的业务操作语句,防止在同一批中,这完全由业务需求和代码编译这决定。

示例二:

SQL Server规定:如果是建库、建表语句、以及我们后面学习的存储过程和视图等,则必须在语句末尾添加 GO 批处理标志。

--例如建表语句的末尾必须添加GO
CREATE TABLE stulnfo
(
......
)
GO

【关于批处理的解说明】

  1. GO提交完成后,是将这个批处理语句当做一个批处理单元处理的,GO是界定一个处理范围的,所以操作批处理单元中的变量只能够在该批处理单元中起作用,超出这个批处理单元就不起作用了的;

存储过程

一、什么是存储过程

1、存储过程的简介

  • 存储过程(stored procedure)类似于C语言中的函数;
  • 用来执行管理任务或应用复杂的业务规则(通过T_SQL语言编写);
  • 存储过程可以带参数,也可以返回结果。

2、存储过程包含的内容

存储过程可以包含数据操纵语句、变量、逻辑控制语句等。

3、存储过程的优点

  • 执行速度更快(预编译,数据库服务器内部执行);
  • 允许模块化程序设计;
  • 提高系统安全性;
  • 减少网络流通量;
  • 可维持性。

4、存储过程的分类

系统存储过程:

  • 由系统定义,存放在master数据库中;
  • 类似C语言中的系统函数;
  • 系统存储过程的名称都以“sp_”(system stored procedure)开头或“xp_”(extend stored procedure)开头;

用户定义存储过程

  • 由用户在自己的数据库中创建的存储过程;
  • 类似C语言中的用户自定义函数;

5、常用的系统储存过程

(1)一般常用的存储过程

【示例】

(2)xp_cmdshell

  • 可以执行DOS命令下的一些操作;
  • 以文本行的凡是返回任何输出;
  • 调用语法:EXEC xp_cmdshell DOS命令 [NO_OUTPUT]  ====》其中,[NO_OUTPUT]为不输出

【示例说明】:创建数据库bankDB,要求保存在D:\back

USE master
GO
EXEC xp_cmdshell 'mkdir d:\bank',NO_OUTPUT
IF EXISTS(SELECT * FROM sysdatabases WHERE name='bankDB')
    DROP DATABASE bankDB
GO
CREATE DATABASE bankDB
(
...
)
GO
EXEC xp_cmdshell 'dir D:\bank\'  --查看文件

执行过程如下:

由于系统管理员没有开启扩展系统存储过程导致的,这是windows为了安全考虑的。具体设置如下图所示:

二、创建存储过程

1、定义存储过程的语法

create proc [edure] 存储过程名
    @参数1 数据类型=默认值 OUTPUT,
    ...... ,
    @参数n 数据类型=默认值 OUTPUT
   AS
   SQL语句
GO
--和C语言的函数一样,参数可选;
--参数分为输入参数、输出参数;
--输入参数允许有默认值

2、不带参数的存储过程

(1)创建不带参数的存储过程

CREATE PROCEDURE usp_ProcShowScore

AS

declare @total int
declare @avg int
select @total=sum(score),@avg=avg(score)
from view考试成绩

if @avg>70
    print 'good' + convert(nvarchar(20),@avg)
else
    print 'no good'

SELECT  *
FROM    View考试成绩
WHERE    (Score < 60)

(2)调用存储过程

  • EXECUTE(执行)语句用来调用存储过程
  • 调用的语法:EXEC 过程名 [参数]

3、带参数额存储过程

(1)创建带参数的存储过程

存储过程的参数分两种:输入参数输出参数

  • 输入参数:用于向存储过程传入值,类似C语言的按值传递。
  • 输出参数:用于在调用存储过程后,返回结果,类似C语言的按引用传递。

【示例】

调用带参数的存储过程:

发布了181 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45116657/article/details/103242323
今日推荐