iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Sql Server存储过程实例分析
  • 525
分享到

Sql Server存储过程实例分析

2023-06-30 15:06:08 525人浏览 安东尼
摘要

今天小编给大家分享一下sql Server存储过程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。从存储过程

今天小编给大家分享一下sql Server存储过程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

从存储过程返回数据 - SQL Server | Microsoft 官方文档

存储过程它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中。

存储过程中有输入参数,输出参数以及返回值等。

Sql Server存储过程实例分析

一、创建存储过程:CREATE PROC

创建存储过程的方法除了他使用AS关键字外,和创建数据库中任何其他对象一样。存储过程的基本语法如下:

在语法中,PROC是PROCEDURE的缩写,两个选项的意思一样。在对存储过程命名完之后,接着是参数列表。参数是可选的。关键字AS其后就是实际的代码。

CREATE PROCEDURE|PROC <sproc name>  [ [schema.] <data type> [VARYING] [=] [OUT[PUT]] [READONLY]  [, [schema.] <data type> [VARYING] [=] [OUT[PUT]] [READONLY]  [,...  ...      ]]  [WITH   RECOMPILE | ENCRYPTioN | [EXECUTE AS { CALLER | SELF | OWNER | <'user name'>}]  AS  <code> | EXTERNAL NAME <assembly name>.<assembly class>.<method>

简单的存储过程示例:

CREATE PROC spPerson  AS    SELECT * FROM Person

执行存储过程:

EXEC spPerson

1、声明参数

声明参数需要以下几部分的信息:名称、数据类型 、默认值 、方向、

对于名称,有一组简单的规则。

  • 它必须以@符号(和变量一样)开始。此外,除了不能内嵌空格外,其规则与普通变量规则相同。

  • 数据类型和名称一样,必须像变量那样声明,采用SQL Server内置的或用户自定义的数据类型。

  • 声明需要类型时需要注意,当声明CURSOR类型参数时,必须也使用VARYING和OUTPUT选项。同时,OUTPUT可以简写为OUT。

其语法如下所示:

@parameter_name [AS] datatype [=default|NULL] [VARYING] [OUTPUT | OUT]

一个需要传入参数的存储过程示例:

CREATE PROC spName    @Name nvarchar(50)  AS  SELECT Name FROM Person WHERE Name LIKE @Name + '%';

执行存储过程:

EXEC spName '酒';

2、提供默认值

在默认值方面,参数与变量不同。对于同样的情况,变量一般初始化为NULL值,而参数不是。事实上,如果不提供默认值,则会假设参数是必须的,并且当调用存储过程时需要提供一个初始值。

为了使参数是可选的,必须提供默认值。方法是在数据类型后在逗号之前添加"="符号和作为默认值的值。这样,存储过程的用户可以有决定对此参数不提供值或是提供他们自己的值。

创建一个存储过程如下:

CREATE PROC spName  @Name nvarchar(50) = NULL  AS  IF @Name IS NOT NULL      SELECT * FROM Person WHERE NAME = @Name  ELSE      SELECT * FROM Person WHERE Id = 45

执行如下语句:

EXEC spName EXEC spName '如意刀狼'

输出结果如下:

Sql Server存储过程实例分析

3、输出参数

一个获得OUTPUT参数的存储过程:

CREATE PROC InsertPerson      @Id int OUTPUT  --必须注明为OUTPUT  AS  INSERT INTO Person VALUES('刘备',22,190,'不详','未婚','幼儿园','不详',4999999)  SET @Id = @@IDENTITY

执行存储过程:

DECLARE @Id int  --实际上,调用时名称可以不同,例如也可以为@Num,@i等等。EXEC InsertPerson @Id OUTPUT    --注意此处也要有OUTPUTSELECT @Id

4、返回值。返回值必须是整数。

返回值可用来确定存储过程执行的状态。

SQL Server默认会在完成存储过程时自动返回一个0值。

为了从存储过程向调用代码传递返回值,只需要使用RETURN语句。

RETURN []

要特别注意的是:返回值必须是整数

关于RETURN语句,最重要的是知道它是无条件地从存储过程中退出的。无论运行到存储过程的哪个位置,在调用RETURN语句之后将不会执行任何一行代码。

下面的存储过程,让其返回一个指定的值,以指示执行状态。

CREATE PROC spTestReturns  AS  DECLARE @MyMessage nvarchar(50);  DECLARE @MyOtherMessage nvarchar(50);  SELECT @MyMessage = '第一个RETURN';  PRINT @MyMessage;      RETURN 100;        --将这里改成返回100  SELECT @MyOtherMessage = '第二个RETURN';  PRINT @MyOtherMessage;  RETURN;

执行之后,显示结果如下:

DECLARE @Return intEXEC @Return = spTestReturns  //第一个RETURNSELECT @Return   //返回100

5、执行存储过程:

对于调用存储过程需要注意以下几点:

  • 对于存储过程声明中的输出参数,需要使用OUTPUT关键字。

  • 和声明存储过程时一样,调用存储过程时,必须使用OUTPUT关键字。这样就对SQL Server作了提前通知,告诉它参数所需要的特殊处理。但需要注意的是,如果忘记包含OUTPUT关键字,不会产生运行时错误,但是输出的值不会传入变量中(变量很可能是NULL)。

  • 赋值给输出结果的变量不需要和存储过程中的内部参数拥有相同的名称。

  • EXEC(或EXECUTE)关键字是必须的,因为对存储过程的调用并不是批处理要做的第一件事(如果存储过程的调用是批处理的第一件事,则可以不使用EXEC)。

6、WITH RECOMPILE选项

可以利用存储过程提供的安全性代码和代码封装方面的好处,但还是忽略了预编译代码方面的影响。可以回避未使用正确的查询计划的问题,因为可以确保为特定一次运行创建新的计划。方法就是使用WITH RECOMPILE选项。 
使用该选项的方式有两种:

可以在运行时包含WITH RECOMPILE。这告诉SQL Server抛弃已有的执行计划并且创建一个新的计划-但只是这一次。也就是说,只是这次使用WITH RECOMPILE选项来执行存储过程。

EXEC spMySproc '1/1/2004'  WITH RECOMPILE

也可以通过在存储过程中包含WITH RECOMPILE选项来使之变得更持久。

如果使用这种方式,则在CREATE PROC或ALTER PROC语句中的AS语句前添加WITH RECOMPILE选项即可。如果通过该选项创建存储过程,那么无论在运行时选择了其他什么选项,每次运行存储过程都会重新编译它。

二、修改存储过程:ALTER PROC

ALTER PROC spPerson  AS  SELECT * FROM Person WHERE Id = 45

三、删除存储过程:DROP PROC

DROP PROC|PROCEDURE <sproc name>[;]

四、常用存储过程

1、sp_help: 查询表的信息

sp_help Person

Sql Server存储过程实例分析

看一张表有那些信息,有约束,存储过程,自定义函数等等信息。

2、sp_helpdb: 查看数据库信息

sp_helpdb TestDataCenter

当然也可以不带参数,显示当前数据库连接下的所有数据库信息。

Sql Server存储过程实例分析

这张图几乎包含了数据库的所有信息了。有了这张图,想了解一个数据库的信息就简单了。

3、sp_helpindex: 查看有关表或视图上的索引的信息

sp_helpindex Person

注意参数中是表名,上面的Person就是表名,而不是索引名称。

Sql Server存储过程实例分析

4、sp_helpconstraint: 查看表上的约束信息

sp_helpconstraint Person

注意参数是表名。

Sql Server存储过程实例分析

5、sp_helpfile: 根据文件逻辑名称, 查看文件的信息

sp_helpfile TestDataCenter

注意参数是文件的逻辑名称。也可以不带参数,输出当前数据库的所有文件信息。

Sql Server存储过程实例分析

6、sp_helpfilegroup: 根据文件组名称,查看文件组信息

sp_helpfilegroup 'PRIMARY'

参数名中是文件组的逻辑名称,当然也可以不带参数,这样就仅仅输出当前数据库的文件组信息。

显示结果如下:

Sql Server存储过程实例分析

7、sp_helptext:显示默认值、未加密的 Transact-SQL 存储过程、用户定义 Transact-SQL 函数、触发器、计算列、CHECK 约束灯等的定义。

sp_helptext spName

Sql Server存储过程实例分析

返回的是什么?就是定义的代码。

以上就是“Sql Server存储过程实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Sql Server存储过程实例分析

本文链接: https://www.lsjlt.com/news/329801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Sql Server存储过程实例分析
    今天小编给大家分享一下Sql Server存储过程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。从存储过程...
    99+
    2023-06-30
  • SQL Server存储过程
    理论知识:开始一、TRUNCATE    快速地从一堆表中删除所有行。它和在每个表上进行无条件的 DELETE 有同样的效果,不过因为它不做表扫描,因而快得多。 在大表...
    99+
    2024-04-02
  • SQL Server的存储过程
    本篇内容主要讲解“SQL Server的存储过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server的存储过程”吧! 首先介绍一下什么是存储过程...
    99+
    2024-04-02
  • MySQL的存储过程实例分析
    今天小编给大家分享一下MySQL的存储过程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • mysql存储过程与存储函数实例分析
    这篇文章主要介绍了mysql存储过程与存储函数实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql存储过程与存储函数实例分析文章都会有所收获,下面我们一起来看看吧。...
    99+
    2022-11-30
    mysql
  • mysql存储过程用法实例分析
    本文实例讲述了mysql存储过程用法。分享给大家供大家参考,具体如下: 概述: 简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法; 存储过程跟触发器有点类...
    99+
    2024-04-02
  • SQL Server的存储过程详解
    目录存储过程的概念存储过程的优点系统存储过程用户自定义存储过程1、 创建语法2、 创建不带参数存储过程3、 修改存储过程4、 带参存储过程5、 带通配符参数存储过程6、 带输出参数存...
    99+
    2024-04-02
  • oracle PL/SQL与存储过程分析
    本篇内容介绍了“oracle PL/SQL与存储过程分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PL...
    99+
    2024-04-02
  • mysql存储过程举例分析
    这篇文章主要讲解了“mysql存储过程举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql存储过程举例分析”吧!(1).格式MySQL存储过程创...
    99+
    2024-04-02
  • SQL SERVER存储过程用法详解
    目录一、存储过程的概念存储过程的优点二、存储过程的分类1、系统存储过程2、临时存储过程3、用户自定义存储过程二、存储过程的用法1、不带参数的存储过程,获取MyStudentInfo表...
    99+
    2024-04-02
  • VB.NET调用SQL Server的存储过程
    VB.NET调用SQL Server的存储过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。VB.NET编程语言对于数据库的操作,我们51CTO以前也介绍了不少。比如VB....
    99+
    2023-06-17
  • mysql存储过程的案例分析
    这篇文章主要介绍mysql存储过程的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、什么是存储过程为以后的使用而保存的一条或多条MySQL语句的集合。存储过程思想上就是数据...
    99+
    2024-04-02
  • SQL Server中怎么使用分页的存储过程
    本篇文章为大家展示了SQL Server中怎么使用分页的存储过程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、 以学生表为例,在数据库中有一个Student表,...
    99+
    2024-04-02
  • MySQL的存储函数与存储过程实例代码分析
    这篇文章主要介绍了MySQL的存储函数与存储过程实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL的存储函数与存储过程实例代码分析文章都会有所收获,下面我们一...
    99+
    2023-03-06
    mysql
  • ADO.NET sql server存储过程怎么调用
    这篇文章主要介绍“ADO.NET sql server存储过程怎么调用”,在日常操作中,相信很多人在ADO.NET sql server存储过程怎么调用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ADO.N...
    99+
    2023-06-17
  • SQL Server存储过程功能的优点
    本篇内容主要讲解“SQL Server存储过程功能的优点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server存储过程功能的优点”吧!存储过程功能的...
    99+
    2024-04-02
  • SQL Server中如何调用存储过程
    SQL Server中如何调用存储过程,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  1:删除  CREATEPROCEDU...
    99+
    2024-04-02
  • SQL SERVER中怎么调用存储过程
    这期内容当中小编将会给大家带来有关SQL SERVER中怎么调用存储过程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、SQL SERVER中调用不带输出参数的存储过程...
    99+
    2024-04-02
  • mysql中存储过程的示例分析
    这篇文章主要介绍了mysql中存储过程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在mysql中,存储过程是一组为了完成特定功能...
    99+
    2024-04-02
  • ADO.NET存储过程调用举例分析
    这篇文章主要讲解了“ADO.NET存储过程调用举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET存储过程调用举例分析”吧!此示例很简单,因为存储过程不需要任何输入参数。也就...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作