存储过程(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. 新生赛(2) problem 2 丁磊养猪

    Problem B Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  2. web推送

    WEB消息推送框架 web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推 ...

  3. C# winform平台下使用spread控件导出excel表格

    //首先要引入两个控件:1.根据自己的office 版本在项目->添加引用->microsoft office object 12.0 library (2010版) //2.在.net中 ...

  4. 求1+2+3+...+n的值,要求不能使用乘除法,for、while、if、else、switch、case、等关键字及条件判断语句(JAVA)

    采用递归和三目表达式注意红色字体一定不能写成n-- 1 package com.hunag; public class Sum { static int sum; public static int ...

  5. pl sql练习(2)

    1.尽可能了解oracle的功能,因为很多业务逻辑oracle已经为我们做了,比如oracle已经预定义了大量的异常代码,我们不必要写自己的异常而增加代码的复杂度. 例如oracle定义了当找不到符合 ...

  6. C++标准库之泛型算法

    本文中算法都是指泛型算法. 基本要点: 1)算法使用迭代器进行操作. 2)不依赖容器,但容器希望使用算法,就必须提供接口. 3)通用算法永远不会执行容器操作.操作仅指:更改容器大小的操作.但,容器内部 ...

  7. 不规则三角网 Delaunay——TIN

    http://blog.csdn.net/u010025211/article/details/25032209 知识点一:平面中判断一个点是否在三角形内部. #include <stdio.h ...

  8. GDAL的安装和配置(编译proj.4)

    1.下载地址 http://trac.osgeo.org/gdal/wiki/DownloadSource 下面是两个版本: http://pan.baidu.com/s/1bntuXER  (1.1 ...

  9. LABJS源码浅析

    一.关于LABjs的简单介绍 作者:Kyle Simpson 作用:动态并行加载脚本文件 以及 管理加载脚本文件的执行顺序 官网:http://www.labjs.com/ 二.关于LABjs的使用 ...

  10. Java中的static关键字

    写在前面: 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰 ...