sqlserver中常用的几个存储过程

sqlserver中的存储过程,何为存储过程呢?

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL
语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
.

存储过程的优点:

①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
③安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。 简单讲:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权 有一点需要注意的是,一些网上盛传的所谓的存储过程要比sql语句执行更快的说法,实际上是个误解,并没有根据,包括微软内部的人也不认可这一点,所以不能作为正式的优点,希望大家能够认识到这一点。

缺点:

1:调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。
2:移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。
3:重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。
4:
如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

下面就是举例sqlserver中的存储过程的几个案例:

--创建一个存储过程,查询全部的员工信息
CREATE PROCEDURE finAll
ASBEGINSELECT * FROM emp 
END
EXECUTE finAll--根据员工名称模糊查询员工信息
DROP PROCEDURE findByname
CREATE PROCEDURE findByname@name VARCHAR(50)       --传入一个参数,姓名
AS
BEGINSELECT * FROM emp WHERE ename like '%'+@name+'%'
END--调用存储过程
EXECUTE findByname '张'--创建一个带输出参数的存储过程
CREATE PROCEDURE out_emp@name VARCHAR(50) OUTPUT,@age INT OUTPUT,@DATE DATE OUTPUT
AS
BEGIN SELECT @name = ename,@age = eage,@DATE = eDATE FROM emp 
ENDDECLARE @_name VARCHAR(50);
DECLARE @_age INT ;
DECLARE @_DATE DATE;EXECUTE out_emp  @_name OUTPUT ,@_age OUTPUT ,@_DATE OUTPUT;
PRINT @_name  
PRINT @_age  
PRINT @_DATE  --根据名称模糊查询员工信息(使用if)
CREATE PROCEDURE findByNameAsIf@_name varchar(50)ASBEGIN IF @_name is null or @_name =''BEGINSELECT * FROM emp;ENDELSEBEGINSELECT * FROM emp WHERE ename LIKE '%'+@_name+'%';END
END--调用存储过程
EXECUTE findByNameAsIf '张'
EXECUTE findByNameAsIf ''

这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java枚举类定义性别_Java 枚举类和自定义枚举类和enum声明及实现接口的操作

1.枚举类注:JDK1.5之前需要自定义枚举类JDK 1.5 新增的 enum 关键字用于定义枚举类若枚举只有一个成员, 则可以作为一种单例模式的实现方式1.枚举类的属性1、枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰2、枚举类的使用 private final 修饰的…

2020蓝桥杯省赛---java---B---4( 合并检测)

题目描述 思路分析 假设A国有n个人,感染者有n/100 每k个人一组,共n/k组,共用n/k瓶试剂 按照最坏的情况,每多出一个感染者就多用k瓶试剂, 因此共用n/k(n/100)*k瓶试剂 n是定值,所以求(1/kk/100)最小 由于ab…

visual studio 2017发布dotnet core到docker

docker的好处不用多说,有不了解的可移步《docker入门》,作为一个.net方面的老鸟也想早点搭上docker末班车,减少布署中的各种坑。以下我是在Visual Studio 2017正式版发布后(其实VS2015也是可以的),完全跑起…

URLSearchParams 接口

转载自 URLSearchParams 接口 URLSearchParams 接口定义了很多个用来处理 URL 参数串的方法。 基本使用方法如下 var paramsString "qURLUtils.searchParams&topicapi" // location.search.slice(1) var searchParams new URLSearchParams(paramsString);s…

JDK环境变量配置

1.变量名: JAVA_HOME 变量值:(变量值填写你的jdk的安装目录,例如本人是 E:\Java\jdk1.8.0)2.变量名: Path 变量值: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;3.变量名: CLASSPATH 变量…

2020蓝桥杯省赛---java---B---5( REPEAT 程序)

题目描述 【问题描述】附件 prog.txt 中是一个用某种语言写的程序。其中 REPEAT k 表示一个次数为 k 的循环。循环控制的范围由缩进表达,从次行开始连续的缩进比该行多的(前面的空白更长的)为循环包含的内容。例如如下片段:REPEA…

java oschina_简单说说 OSChina 的技术架构

OsChina.NET 这个域名是在去年 08年8月16日申请的,然后花了不足一个月的时候开发了第一个版本的OsChina,包含有项目展示、新闻、后台管理、会员注册等功能,以后的每次的改进就没那么集中,有空的话就完善完善一直到今天&#xff0c…

强势解析 eBay BASE 模式、去哪儿及蘑菇街分布式架构

互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升。 本文主要针对分布式系统设计、架构(数据一致性)做了分析,祝各位早日走上属于…

MySQL sum()函数

转载自 MySQL sum()函数 MySQL SUM()函数介绍 SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下: SUM(DISTINCT expression)SUM()函数是如何工作的? 如果在没有返回匹配行SELECT语句中使用SUM函数,则SUM函数返回…

利用老毛头启动盘重装win7

注意:请不要跟着本教程一步一步的做,要先看一遍 1.安装win7安装 安装win7系统所需材料: 老毛桃PE系统 下载地址:http://www.laomaotao.tv/如使用其它PE系统也是一样,这里我用老毛桃为例 Win系统镜像…

2020蓝桥杯省赛---java---B---6(分类计数)

题目描述 思路分析 把字符串转换成字符数组 代码实现 package com.atguigu.lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String str sc.next();char[] temp str.toCharArray();int…

MySQL min()函数

转载自 MySQL min()函数 MySQL MIN函数 MIN()函数返回一组值中的最小值。MIN()函数在某些情况下非常有用,例如找到最小的数字,选择最便宜的产品,获得最低的信用额度等。 以下说明MIN()函数的语法: MIN(DISTINCT expression);…

使用 C# 运行符号测试

若有需前后对比的数据,且要确定某种效果是否有统计依据,最常使用的是符号检验。通过举例可以很好地解释这个原理。 假设你在一家制药公司工作,想要确定一种新型减肥药是否有效。你找来八名志愿者服用这种减肥药长达几周的时间。观察八名实验对…

程序人生

在大家眼里程序员是什么样子的呢?是每天不分日夜的在打代码?还是忙来忙去的帮着被人修电脑,调路由器?还是?或者:哈哈哈,作为一个程序员,我是这样的:下班之后先做饭&#…

2020蓝桥杯省赛---java---B---7(分类计数)

题目描述 代码实现 package com.atguigu.lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);long a sc.nextLong();while (a>1){System.out.print(a" ");a/2;}} }

dw怎么在框架中加入网页_怎样使用iframe,在网页中插入页面

首先,我们使用DreamWeaver新建一个站点,将我们需要归纳到一个页面的网页都包含在这个站点里面。然后我们找到一个需要嵌入页面的html文件,使用DW软件打开,找到需要插入页面的位置。3然后我们输入标签。在前半个标签的里面&#xf…

ps中将图片拖不进ps的编辑区的解决方法

今天在学习ps的过程中,发现我的ps怎么和人家老师的不一样,怎么不一样呢?人家老师的ps5中,鼠标可以直接拖到ps的编辑栏中,可是我的死活拖不进去。怎么办?怎么办?经过自己瞎鼓捣和上网查&#xff…

MySQL avg()函数

转载自 MySQL avg()函数 MySQL AVG()函数简介 MySQL AVG()函数是一个聚合函数,它用于计算一组值或表达式的平均值。 AVG()函数的语法如下: AVG(DISTINCT expression)您可以使用AVG()函数中的DISTINCT运算符来计算不同值的平均值。 例如,…

.Net Core迁移到MSBuild的多平台编译问题

一、前言 本篇主要讨论.NET Core应用程序项目结构的主题,重点探索.NET Core应用程序的多平台编译问题,这里指的多平台是指.NET Framework、.NET Core App、.NET Standard、Mono、UWP等多平台的条件编译、项目(包)引用、编译符号等…

strcompare php,PHP中的startswith()和endsWith()函数

泛舟湖上清波郎朗功能function substr_startswith($haystack, $needle) {return substr($haystack, 0, strlen($needle)) $needle;}function preg_match_startswith($haystack, $needle) {return preg_match(~ . preg_quote($needle, ~) . ~A, $haystack) > 0;}function su…