获取SqlServer存储过程定义的三种方法
作者:深蓝医生 发布时间:2024-01-24 06:03:38
存储过程的概念
存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。
存储过程的优点
A、 存储过程允许标准组件式编程
存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。
B、 存储过程能够实现较快的执行速度
如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。
C、 存储过程减轻网络流量
对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。
D、 存储过程可被作为一种安全机制来充分利用
系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。
以上给大家介绍的存储过程的概念和存储过程的优点都是给本文做铺垫,重点给大家介绍SqlServer存储过程定义的三种方法,一起看看吧!
第一种:
declare @p_text varchar(max)
SELECT @p_text= text
FROM syscomments
WHERE id = ( SELECT id FROM sysobjects WHERE name = ' 存储过程名称 ')
print @p_text
但当存储过程内容比较长的时候,text的内容显示不完全。
第二种:
declare @p_text varchar(max)
SELECT @p_text= definition FROM sys.sql_modules
JOIN sys.objects ON sys.sql_modules.object_id=sys.objects.object_id --and type='P'
and sys.objects.name='sp_MSupd_dboInd_IndependenceReportTo'
print @p_text
内容格式良好,但是Print本身不能显示超过 8000字节的内容,所以存储过程内容太长这种方式还是不行。
第三种:
exec sp_helptext '[sp_MSupd_dboRpt_Customer]'
返回定义的内容但是一个文本行内容一个记录行,这样就可以解决上面的不足了。
以上所述是小编给大家介绍的获取SqlServer存储过程定义的三种方法网站的支持!
来源:http://www.cnblogs.com/bluedoctor/archive/2016/07/19/5686576.html
猜你喜欢
- 解决方法:先encode再quote。原理:msg.encode('utf-8')是解决中文乱码问题。quote():假如U
- jemalloc源于Jason Evans 2006年在BSDcan conference发表的论文:《A Scalable Concurr
- 读取一个已经保存了的字典f = open('dict_th','r')a = f.read()dict_hi
- Pycharm运行程序时,控制台输出PyDev console:starting1、问题:写好程序后,点击Run运行,控制台如下图所示提示P
- 希望达到的效果工具类的Golang项目需要编译成二进制文件后在命令行中运行,所以希望在github里面创建一个新的release后能自动编译
- python调用mysql数据库通常通过mysqldb模块,简单说下如何调用1.安装驱动目前有两个MySQL的驱动,我们可以选择其中一个进行
- 我们知道 Pandas 是数据科学社区中流行的 Python 包,它包含许多函数和方法来分析数据。尽管它的功能对于数据分析来说足够有效,但定
- 1、配置安装源# 安装dnf install http://mirrors.ustc.edu.cn/mysql-repo/mysql80-c
- 前言哈喽铁汁们~新年到了,很多小伙伴都会买上一本日历。现在各种主题各种式样的日历有很多,不过你有没有想过自己定制一套专属的个性化电子日历呢?
- py2exe在sourceforge 的下载只支持到2.7。针对python3.0+的版本,需要自己编译。1.下载源码svn checkou
- 1、Set基本数据类型a、set集合,是一个无序且不重复的元素集合class set(object): ""
- 产生原因:先说一下Git和SVN的区别吧,有助于更好的理解这个问题。SVN从服务器上update文件时,如果文件有冲突,SVN会自动帮你me
- 以前经常吃公司旁边的食堂,人多,排队。夏天的时候,我们总要找一个靠窗口通风好的地方坐,没有空调只有风扇,风扇很多,开关都集中在一个地方,应该
- <?php //设置我们将要使用的文件 $srcurl = "http://localhost/index.php"
- (一)说在前面 Python自带了GUI模块Tkinter,只是界面风格有些老旧。另外就是各种GUI框架
- 在进行keras 网络计算时,有时候需要获取输入张量的维度来定义自己的层。但是由于keras是一个封闭的接口。因此在调用由于是张量不能直接用
- 本文向大家介绍一个javascript实现的动画。点击开始按钮div会往右移动,点击停止后,div停止移动,再点击则继续移动。请看下面代码:
- 假设某宝为鼓励大家双12买买买,奖励双十一那天订单最多的两位用户:分别是用户1:“剁手皇帝陈哈哈” 和 用户2:“触手怪刘大莉” 一人一万元
- 本文为大家介绍了Python函数作用域的查找顺序,供大家参考,具体内容如下1.什么是LEGB? L:local 函数内部作用域 E:encl
- 本文实例讲解了python实现两个程序之间通信的方法,具体方法如下:该实例采用socket实现,与socket网络编程不一样的是socket