SQL Server存储过程多角度介绍建议收藏

什么是存储过程:存储过程(Procedure)类似于C#语言中的方法,它是SQL语句和控制流语句的预编译集合。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、逻辑控制语句

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

SQL Server存储过程多角度介绍建议收藏此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

什么是存储过程:

        存储过程(Procedure)类似于C#语言中的方法,它是SQL语句和控制流语句的预编译集合。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、逻辑控制语句以及其他强大的编程功能。

        存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数、输出参数、返回单个或多个结果集以及返回值。

        存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。

        类似于C#中的类库,SQL Server 提供了一些预编译的存储过程,这些存储过程称为“系统存储过程”。

 

SQL Server中的存储过程的特征如下:

        1>接收输入参数,并向调用过程或语句返回值。

        2>包含在数据库中执行操作或调用其他存储过程的编程语句。

        3>向调用过程返回状态值,指示执行过程是否成功(如果失败,还返回失败原因)

 

使用存储过程有下列优点:

        1>允许模块化程序设计

只需创建一次存储过程并将其存储在数据库中,所以即可在程序中调用该过程任意次。

        2>允许更快地执行

如果某操作需要大量的T-SQL代码或需要重复执行,存储过程将比T-SQL批处理代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程内存中的版本。但如果使用T-SQL批处理代码,每次运行T-SQL语句时,都要从客户端重复发送,并且在SQL-Server每次执行这些语句时,都要对其进行编译和优化。

        3>减少网络流量

创建使用存储过程后,一个需要数百行T-SQL代码的操作,由一条执行该过程代码的单独语句就可实现,而不需要在网络中发送数百行代码

        4>可作为安全机制使用

即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限

 

存储过程分为以下两类:

        1>系统存储过程

        2>用户自定义存储过程

 

常用的系统存储过程:

sp_databases:列出服务器上的所有数据库

sp_helpdb:报告有关指定数据库或所有数据库的信息

sp_renamedb:更改数据库的名称

sp_tables:返回当前环境下可查询的对象的列表

sp_columns:返回某个表列的信息

sp_help:查看某个表的所有信息

sp_helpconstraint:查看某个表的约束

sp_helpindex:查看某个表的索引

sp_stored_procedures:列出当前环境中的所有存储过程

sp_password:添加或修改登录账户的密码

sp_helptext:显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本

另外,还有一个常用的扩展存储过程:xp_cmdshell,它可以完成DOS命令下的一些操作,诸如创建文件夹、列出文件列表等。

 http://www.cnblogs.com/roucheng/

用户定义的存储过程:

除了系统存储过程,用户还可以创建自己的存储过程,可使用Microsoft SQL Management Studio或使用T-SQL语句,使用Microsoft SQL Management Studio创建存储过程的步骤类似于视图,用于创建存储过程的T-SQL语句为CREATE PROCEDURE。所有的存储过程都创建在当前数据库中。

 

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

使用T-SQL语句创建存储过程的语法如下:

CREATE PROC[EDURE] 存储过程名

           AS

        SQL语句

调用存储过程:

EXEC 存储过程名

 

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

输入参数:可以在调用时向存储过程传递参数,此类参数可用来在存储过程中传入值。

带输入参数的存储过程T-SQL语句如下:

CREATE PROC[EDURE] 存储过程名

        @参数1   数据类型  [ = 默认值 ],

        ……,

        @参数n   数据类型  [ = 默认值 ]

   AS

        SQL语句

调用存储过程:

EXEC 存储过程名 参数1的值,……,参数n的值

         或

EXEC 存储过程名  @参数1=值,……,@参数n=值

 

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

输出参数:如果希望返回值,则可以使用输出参数,输出参数后有“OUTPUT”标记,执行存储过程后,将把返回值存放在输出参数中,可供其他T-SQL语句读取访问。

带输出参数的存储过程T-SQL语法如下:

CREATE PROC[EDURE] 存储过程名

        @参数1   数据类型  [ OUTPUT ],

        ……,

        @参数n   数据类型  [ OUTPUT ]

   AS

        SQL语句

调用存储过程:

EXEC 存储过程名 变量名 OUTPUT

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120712.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 应用程序已被 JAVA 安全阻止的解决办法

    应用程序已被 JAVA 安全阻止的解决办法当运行程序的时候有这样的弹窗出现时    到控制面板中的程序里面选择Java    在弹窗的安全中进行设置,把安全级别调到高或者中,或者在编辑站点列表中添加url也可以,点击应用和确认后设置生效    …

  • Linux下的文件IO编程[通俗易懂]

    Linux下的文件IO编程[通俗易懂]Linux中处处皆文件,可以通过终端命令来对文件进行操作,也可以通过编程语言(程序)来对文件进行操作。而在C语言中可以通过标准IO和文件IO对文件进行操作,上一篇文章描述了标准IO,这篇文章当然是关于文件IO的基本操作,同时给予了详细的例程和标准IO进行对比。

  • 求方阵的无穷范数「建议收藏」

    //无穷范数是各行绝对值之和中的最大值includeusingnamespacestd;//这个题本来没看到方阵多此一举定义了mxn阶矩阵intfanshu(intx,doublea[20][20])//定义计算行范数函数{ints,norm=0,i,j;for(i=0;i…

  • html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码

    html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码一、前期准备1.1案例分析适用场景:单例布局1.2方法论V视图HTML+CSS+调试Cjs实现控制流程D数据优化扩展二、代码结构h2captionh3caption样式(CSS略)脚本功能开发>>内容输出Template改造输出幻灯片&控制按钮图片位置调整>>切换控制切换幻灯片.main_i_active切换控制按钮.ctrl…

  • 通过阿里云服务器部署flask项目详细步骤,从服务器选择开始

    通过阿里云服务器部署flask项目详细步骤,从服务器选择开始通过阿里云服务器部署flask项目详细步骤,从服务器选择开始1.购买服务器,我们目前选择镜像Ubuntu16.0464位的系统,因为这个系统目前运行比较稳定2.设施远程链接密码3.添加安全组4.利用ssh链接服务器5.先更新apt相关源6.mysql安装7.redis安装8.安装虚拟环境9.配置.bashrc修改.bashrc文件输入命令,打开.bashrc文件添加以下三行代码使.bashr…

  • 零基础成为黑客[通俗易懂]

    零基础成为黑客[通俗易懂]笔者刚乱入了CTF,算是入门了,此处分享一下入门经验一个漏洞练习平台:https://github.com/gh0stkey/DoraBox使用教程参考:https://www.cnblogs.com/zhaijiahui/p/10789251.html攻防世界:https://adworld.xctf.org.cn/task这个网站很良心,第一次点开这个网站,仿佛看到了新世界…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号