获取SqlServer存储过程定义的三种方法

存储过程的概念

存储过程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存储过程定义的三种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • mysql 存储过程中变量的定义与赋值操作

    一.变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end 块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值. 定义一个变量语法如下: declare var_name[,...] type[default value]看一个变量定义实例 declare last date;二.mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set

  • 浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解. (1)先执行下面脚本,创建一

  • 谈谈sqlserver自定义函数与存储过程的区别

    一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到外部环境: 不能通过select返回结果集: 不能update,delete,数据库表: 3. 必须return 一个标量值或表变量 自定义函数一般用在复用度高,功能简单单一,争对性强的地方. 二.存储过程 1. 不能返回表变量 2. 限制少,可以执行对数据库表的操作,可以返回数据集 3. 可以return一个标量值,也可以省略return 存储过程一般用在实现复杂的

  • 深入mysql创建自定义函数与存储过程的详解

    一 创建自定义函数在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题:mysql表结构如下 复制代码 代码如下: DROP TABLE IF EXISTS `test`;CREATE TABLE `test` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `pic` varchar(50) NOT NULL,  `hashcode` varchar(16) N

  • Sql中存储过程的定义、修改和删除操作

    1.存储过程的分类 系统存储过程 本地存储过程(用户自定义) 临时存储过程(局部[#].全局[##]临时存储过程) 2.创建存储过程 --选出价格区间的商品信息 create procedure sp_goods_price @minprice float ,@maxprice float as select * from goods where price>=@minprice and price <=@maxprice go 执行存储过程: execute sp_goods_price 2

  • 获取SqlServer存储过程定义的三种方法

    存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行. 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数.输出参数.返回单个或多个结果集以及返回值. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快.同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量.简单网络负担. 存储过程的优点 A. 存储

  • Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /**  * 获取系统当前时间之方式一  * @explain 使用Calendar实现  * @param format  * @return  */ public static String getSysdateStr(String format) {     Date sysdate = Calend

  • vue3 微信扫码登录及获取个人信息实现的三种方法

    目录 一.流程: 二.前置条件: 三.具体登录实现 实现方式一: 方式二: 方式三:结合后端获取到二维码 四.登录微信后获取微信中用户头像和昵称 一.流程: 微信提供的扫码方式有两种,分别是: 跳转二维码扫描页面 内嵌式二维码 根据文档我们可以知道关于扫码授权的模式整体流程为: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据 code 参数: 2. 通过 code 参数加上 AppID 和AppSecret等,通过 API

  • nodejs获取表单数据的三种方法实例

    前言 nodejs作为服务端语言,在开发中注册登录等需通过form表单向后端发送数据进行判断,那作为服务端语言的nodejs通过哪些方法可以接收调用form表单的post请求值呢. 常见的会用到以下三种,让我们对着例子看看具体用法. 后端我们使用express插件,需要对express有所了解的才便于阅读哦~ 1.首先npm初始化,下载express包,导入模块后创建服务对象 //导入express模块 const express = require("express"); // 创建

  • android获取屏幕宽高与获取控件宽高(三种方法)

    1.获取屏幕宽高 方法1: int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px) int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p) Log.e(TAG + " getDefaultDisplay", "screenWidth=&q

  • C#中获取、生成随机数的三种方法

    随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当前系统时钟为种子,进行一系列算法得出要求范围内的伪随机数. 复制代码 代码如下: Random rd = new Random(); int i = rd.Next(); 这种随机数可以达到一些要求较低的目标,但是如果在高并发的情况下,Random类所取到的系统时钟种子接近甚至完全一样,就很有可能出

  • JavaScript中获取HTML元素值的三种方法

    JavaScript中取得元素的方法有三种:分别是: 1.getElementById() 方法:通过id取得HTML元素. 2.getElementsByName()方法:通过name取得元素,是一个数组. 3.getElementsByTagName()方法:通过HTML标签取得元素,是一个数组. 如果要取得值可以使用value,如:var x=document.getElementById("id").value; 方法一:getElementById() 方法 可返回对拥有指定

  • C# 获取当前月份天数的三种方法总结

    方法一: //最有含量的一种 int days = System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(DateTime.Now.Year ,DateTime.Now.Month); 方法二://最奇怪的一种 DateTime dtNow = DateTime.Today;     int days = dtNow .AddDays(1 - dtNow .Day).AddMonths(1).

  • 原生js获取left值和top值的三种方法

    在用js做动态效果时,通常需要获取元素绝对定位中的left和top属性值.比如做一个碰撞广告,就要不停的获取元素的top和left属性值. 需要注意的事:取值的元素必须要设置position:absolute绝对定位属性,才能取的到left值. 第一种方法,比较简单,就是直接通过obj.style.left和obj.style.top,但是有局限性,这种获取的方法只能获取到行内样式的left和top的属性值,不能获取到style标签和link 外部引用的left和top属性值. 第二种方法 只读

  • Android读取服务器图片的三种方法

    Android链接服务器获取图片在此提供三种方法,已通过验证,无误. 方法一: public static Bitmap getImage(String path){ try { HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); System.out.println

随机推荐