存储过程(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. PHP 超强过滤函数

    PHP 超强过滤函数 你有每次要过滤的时候总是去翻曾经的过滤代码的时候么? 你有搜索过怎样防过滤,防攻击的PHP解决方法么? 你有对全然遵循'过滤输入,避免输出',Web界经典说辞么?     事实上 ...

  2. VisualStudio.DTE 对象可以通过检索 GetService() 方法

    DTE dte = (DTE)GetService(typeof(DTE)); string solutionDir = System.IO.Path.GetDirectoryName(dte.Sol ...

  3. ASP.NET 开发框架汇总

    先简单记录一下,以后慢慢添加 1.ASP.NET Aries 2.ASP.NET DevExpress

  4. ios9基础知识总结(一)

    I--load 类被加载时自动调用,只要类的项目中,运行时就会加载.类一加载,此方法就会调用 //类被加载时调用,只要类的项目中,运行时就会加载,类一加载,此方法就调用 + (void)load { ...

  5. codeforces #332 div2

    A. #include<cstdio> #include<algorithm> #include<cmath> #include<map> #inclu ...

  6. C语言-运算符与表达式

    运算符分类: 算术运算符:+   -  *    /          % 关系运算符:>  <  =  <=  >= ==  != 逻辑运算符:&& || ! ...

  7. wordpress一些常用代码

    显示最新文章 <div id="newpost"> <h2> 最新文章</h2> <?php $previous_posts = get_ ...

  8. DedeCms 建站随笔(一)

    站名:524社区网 代码:DedeCms织梦5.7代码(UTF-8) 服务器:Linux 问题一:火车头(熊猫)采集,登录成功之后无法获取栏目列表. 原因:1.新建栏目后没有更新栏目HTML文件,并且 ...

  9. Python之路第十一天,高级(3)-Python操作 Memcached、Redis

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  10. FFMPEG图片转视频

    1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i input_file -acod ...