存储过程是一组预编译的SQL语句,它可以包含数据操纵语句、变量、逻辑控制语句等。

存储过程允许带参数:

  • 输入参数:可以在调用时向存储过程传递参数,此类参数可用来向存储过程中传入值(可以有默认值)
  • 输出参数:从存储过程中返回(输出)值,后面跟随OUTPUT关键字

存储过程的优点:

  1. 执行速度快
  2. 允许模块化设计
  3. 提高系统安全性
  4. 减少网络流量

创建存储过程

我们可以使用create procedure命令创建存储过程。

create procedure calcAge (
@birthday datetime, --输入参数
@age int output --输出参数,参数后面加 output
)
as
begin --begin...end 语句块不是必须的(即使是多条语句)
declare @now datetime
set @now=getdate()
set @age=YEAR(@now)-YEAR(@birthday) --为输出参数赋值,不需要return
end

输入参数带默认值:

create procedure calcAge (
@birthday datetime = '2012-1-1', --输入参数,带默认值,调用的时候可以不指定
@age int output --输出参数,参数后面加 output
)
as
begin --begin...end 语句块不是必须的(即使是多条语句)
declare @now datetime
set @now=getdate()
set @age=YEAR(@now)-YEAR(@birthday) --为输出参数赋值,不需要return
end

调用存储过程

我们新定义的存储过程有输出参数,调用的时候也需要指定参数为output

declare @age int
execute calcAge '2012-1-1', @age output --标记参数@age为output
print @age

调用存储过程时,默认情况下指定的参数是按照定义的数序指定的,我们也可以显示的指定:

declare @myAge int
execute calcAge @age=@myAge output --显示指定参数@age
print @myAge

修改存储过程

使用alter procedure命令修改存储过程,例如下面的伪代码:

alter procedure calcAge (
@birthday datetime,
@age int output
)
as
begin
-- 这里是你的逻辑
end

删除存储过程

使用drop procedure命令删除存储过程:

drop procedure calcAge

SQL Server编程(03)自定义存储过程的更多相关文章

  1. sql server 常用的系统存储过程

      系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...

  2. SQL Server编程系列(2):SMO常用对象的有关操作

    原文:SQL Server编程系列(2):SMO常用对象的有关操作 在上一篇周公简单讲述了SMO的一些基本概念,实际上SMO体系结构远不止周公在上一篇中讲述的那么简单,下图是MSDN上给出的一个完整的 ...

  3. SQL Server编程系列(1):SMO介绍

    原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己 ...

  4. (转) SQL Server编程系列(1):SMO介绍

    最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...

  5. [转]SQL Server编程:SMO介绍

    转自:周公 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文 ...

  6. SQL Server技术问题之存储过程与sql语句的优缺点

    优点: 1. 允许模块化程序设计.2.可维护性高,只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储过程可独立于程序源代码而单独修改,而不需要更改.测试以及重新部署程序集 ...

  7. Oracle与SQL SERVER编程差异分析(入门)

    网上有关Oracle与SQL SERVER性能差异的文章很多,结论往往是让你根据数据量与预算来选择数据库.但实际项目中,特别是使用 .Net 开发的系统,支持以上两种数据库或者更多已经成为Boss的普 ...

  8. Sql Server 带参数的存储过程执行方法

    Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...

  9. [转] sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...

  10. SQL Server编程(02)自定义函数

    在编程过程中,我们通常把特定的功能语句块封装称函数,方便代码的重用.我们可以在SQL Server中自定义函数,根据函数返回值的区别,我们自定义的函数分两种:标量值函数和表值函数. 自定义函数的优点: ...

随机推荐

  1. matlab中的xcorr 自相关函数

    转载自 http://blog.163.com/to_be_myself/blog/static/176060227201101762159227/ Matlab中用于计算自相关函数的指令是xcorr ...

  2. linux 权限

    ls -la 查看文件 drwxr-xr-x 2 root root 4096 ...... 第一个d:代表目录:-代表文件 后面三个一组:r:读:w:写:x:执行 第一个root 代表所属用户: 第 ...

  3. SSH框架 sequence diagram

  4. yii2搭建完美后台并实现rbac权限控制实例教程

    1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...

  5. 【BZOJ 1857】【SCOI 2010】传送带

    三分套三分,虽然简单,但是也得掌握,,, 时间复杂度$O(log_{1.5}^2 n)$ 一开始WA好几次发现是快速读入里没有return,这样也能过样例?_(:3J∠)_ #include<c ...

  6. 让编辑器支持word的复制黏贴,支持截屏的黏贴

    chrome有很多人性化的API,比如拖拽, 比如图片可以转化为base64等: 比如知乎上面的回复中可以直接黏贴图片,  就不需要手动点击图片上传按钮, 选择图片, 确认上传等等: 知乎参考地址:打 ...

  7. 理解 Mybatis的分页插件 PageHelper

    Mybatis + SpringMVC + Maven实现分页查询 (推荐采用的插件是PageHelper) 先看一下之前的这篇博客,这里推荐了 Mybatis 的分页方法. 按照上面的方法设置后,确 ...

  8. Elasticsearch静态集群配置

    这两天需要将ELK中的单节点运行的ES扩展为双节点,查询了下集群配置,百度搜索结果还是一如既往的坑,基本都是各种转帖,以下记录配置静态集群的步骤: * * * <pre><code& ...

  9. HTTP协议学习---(九)cookie

    Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的[细说Cookie], 让我学到了很多东西.Fish的这篇文章写得太经典了. 所以我这篇文章就没有太多内容了. 最近我打算写 ...

  10. SVN安装配置和使用教程

    注意:location :为安装文件位置,Repositories:为管理的代码仓库的位置,若选中Use secure connection前面的Checkbox,则表示安全连接[https],这里的 ...