SQL Server编程(03)自定义存储过程

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

存储过程是一组预编译的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


本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/p/4917333.html,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
47 10
|
25天前
|
SQL Perl
PL/SQL编程基本概念
PL/SQL编程基本概念
13 0
|
29天前
|
存储 SQL Go
sqlserver存储过程
sqlserver存储过程
19 0
|
29天前
|
存储 SQL 数据库
sqlserver中常用的几个存储过程
sqlserver中常用的几个存储过程
48 0
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
17天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
7天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
25天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数