存储过程(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. 【C++第三课】---新的关键字

    一.动态分配内存的时的关键字 注意在C++中和C不一样的是,在C中使用的malloc来动态分配内存,而这个malloc只是标准C库的调用,所以这个不属于标准C的范畴,而在C++ 中却有真正的关键字来分 ...

  2. Head First C#(赛狗日)

    实验背景: 人:Joe.Bob和AI希望参见赛狗赌博.最初,Joe有50元,Bob有75元,AI有45元.每次比赛前,他们都会各自决定是否下注以及所押的赌金.直到比赛前,他们都可以改变赌金,但是一旦比 ...

  3. mysql 5.6

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

  4. JAX-RS开发 hello world

    1.建立maven webapp工程aty-rest. 2. 在pom文件增加spring框架.jax-rs接口.CXF实现 <dependency> <groupId>jav ...

  5. oracle linux 安装过程错误 :Error in invoking target ‘agent nmhs’ of makefile

    Problem:When installing 11.2.0.4 on Redhat 7: Error in invoking target 'agent nmhs' of makefile '/u0 ...

  6. DevExpress中SearchLookUpEdit用法总结

    在前一个项目中用到了DevExpress,需要搜索某一个字段,来拉取出对应的相关信息,比来比去,发现SearchLookUpEdit的用户体验更好,但自己是个不折不扣的C#和DevExpress的初学 ...

  7. Mongoose的模糊查询

    var Commidity = require("./Model/commiditiesModel"); function search(response,request,key) ...

  8. .NET Web开发之.NET MVC框架

    摘要:MVC是一种架构设计模式,该模式主要应用于图形化用户界面(GUI)应用程序.那么什么是MVC?MVC由三部分组成:Model(模型).View(视图)及Controller(控制器). MVC概 ...

  9. hdu2309ICPC Score Totalizer Software

    Problem Description The International Clown and Pierrot Competition (ICPC), is one of the most disti ...

  10. nodejs中的 Cannot read property'text' of undefined 问题

    接触nodejs时间不久,最近遇到了这个问题,经过查阅资料以及百度终于解决了.