存储过程(procedure)就是一个函数,完成一段sql代码的封装,实现代码的重用。
    优点:
        1、比使用DotNet直接写Sql脚本执行少了一块解析编译的过程。效率更快一点点。
        2、使用存储过程的时候,业务 改变只需要改存储过程,然后业务逻辑就发生变化了,不需要修改C#代码。
            貌似方便。
        3、传递sql脚本数据相对小。
    缺点:
        1、使用存储过程,数据库可移植性差。
        2、把业务放到了存储过程里面去,相当于业务处理的压力放到数据库里面去。业务层去处理,数据库只是来存储数据。

为啥这么做:(1)解放数据库的压力(2)数据库本身做集群很困难,业务去做分流,做集群很容易。

语法

  create proc 名称
  参数列表
  as
  代码段
  调用:exec 名称 参数列表
知识1:可以使用output修饰参数
知识2:可以使用默认值,注意需要将最后的参数设置成默认值

示例1 

  create proc trim  ---创建一个存储过程
  @str varchar(10)  --参数列表,多个间用逗号分隔
  as
  --自定义代码段
  declare @str1 varchar(10)
  set @str1=LTRIM(RTRIM(@str))
  print @str1

  --使用存储过程
  exec trim ' abc '
  --打印'abc'

示例2
  带输出参数的存储过程

  --求两个数的和
  create proc sum1
  @num1 int,
  @num2 int,
  @result int output --表示这个参数可以将结果带出存储过程
  as
  set @result=@num1+@num2

  --调用

  declare @r1 int
  exec sum1 1,2,@r1 output    --必须要写output关键字,否则调用出错
  print @r1

示例3

  参数带默认值的存储过程,注意:默认值必须是最后一个参数
  create proc multi
  @num1 int,
  @num2 int=10 output --output的功能类似于C#中的ref修饰参数
  as
  set @num2=@num2*@num1
  print @num2
  --测试带出值的效果
  declare @num int=2
  exec multi 3,@num output
  select @num
  --测试默认值
  exec multi 3

T-SQL存储过程的更多相关文章

  1. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  2. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...

  3. SQL存储过程的调用及写法

    调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...

  4. sql存储过程几个简单例子

    导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解. 例1: cr ...

  5. SQL存储过程生成顺序编码

    一.第一种方式 USE [WJKC]GO/****** Object:  StoredProcedure [dbo].[Address_GetCode1]    Script Date: 2016/3 ...

  6. SQL 存储过程入门(事务)(四)

    SQL 存储过程入门(事务)(四)   本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...

  7. 在SQL存储过程中给条件变量加上单引号

    在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) ), )), )+ ...

  8. SQL存储过程概念剖析

    一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...

  9. sql 解析字符串添加到临时表中 sql存储过程in 参数输入

    sql 解析字符串添加到临时表中  sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表   FROM dbo.Func_SplitOneCol ...

  10. 查询数据库后台Block 的Sql存储过程

    查询数据库后台Block 的Sql存储过程 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO /*记录SQL Server的阻塞情况 wang 200 ...

随机推荐

  1. Capture the Flag(模拟)

    Capture the Flag Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge In computer se ...

  2. poj1664 放苹果(递归)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=1664 ------ ...

  3. 使用spring 并加载模板发送Email 发邮件 java 模板

    以下例子是使用spring发送email,然后加载到固定的模板,挺好的,大家可以试试 需要使用到spring-context 包 和 com.springsource.org.apache.veloc ...

  4. mysql 5.6

    mysql 5.6的安裝: 1,提前安装依赖的库环境. yum install -y  make bison cmake gcc-c++ ncurses ncurses-devel  git 2,下载 ...

  5. DataSet、DataTable、DataRow区别

     DataSet 表示数据在内存中的缓存. 属性 Tables  获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据 ...

  6. android 根据网络来获取外网ip地址及国家,地区的接口

    新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool. ...

  7. 在Android Studio中进行单元测试和UI测试

    本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...

  8. 敏捷软件开发之TDD(一)

    测试驱动开发即TDD是敏捷软件开发方法的重要组成部分.TDD是从极限编程中发展而来,它既可以用在设计时也可以用在开发实践中.TDD把业务需求转化为可以运行的测试代码并具有如下的优点1.TDD从一开始就 ...

  9. 微软ajax组件

    拖个listview 然后绑定数据源,对curd选项打勾,然后拖个scriptManager进来,在拉个updatepanel进来,在updatepanel中放入个contentTemplate,吧l ...

  10. bluestacks安装安卓引擎时出现2502 2503错误的解决办法

    2503代表工作站无法启动.2502代表下面的程序调用不支持的MS-DOS函数. 以管理员身份运行命令提示符在经典桌面使用快捷键Win+X,出现一个菜单,选择“命令提示符(管理员) ”即可以以管理员身 ...