前言

前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数,本文来介绍一下存储过程的创建、执行、删除。(还是以前文中银行系统为例)

概述

存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数(如果该存储过程带有参数)来执行。

语法


创建存储过程

--创建存储过程
CREATE PROC[EDURE] <存储过程名称> -- 添加存储过程所需的参数[<@参数1> <参数类型1> [= 默认值] [OUTPUT], ……<@参数n> <参数类型n> [= 默认值] [IN|OUT|OUTPUT]]
AS
BEGIN-- 这里面可以写为变量赋值语句SQL语句块
END

注意

  1. 其中存储过程名不能超过128个字,每个存储过程中最多设定1024个参数;

  2. 存储过程所需的参数可有可无,如果有参数为带参数存储过程,没有参数就是无参数存储过程;

  3. 带参数存储过程参数后面有关键字OUT|OUTPUT为带输出参数存储过程;

[IN|OUT|OUTPUT]介绍

  • IN:在参数后面加了IN关键字的表示为输入参数,默认的情况就是输入参数;

  • OUT:在参数后面加了OUT关键字的表示为输出参数;

  • OUTPUT:在参数后面加了OUTPUT关键字表示为输入输出参数,既是传入参数也是输出参数。


调用存储过程

--调用存储过程
EXEC<存储过程名称> [参数列表]

删除存储过程

--删除存储过程
DROP PROC[EDURE] <存储过程名称>

示例

/*
* 查询交易信息表中总的交易金额,以及支取和存入的总金额,并打印出来
*/
--判断存储过程是否存在
--存在则删除
if exists(select * from sysobjects where name = 'proc_getTransMoney')
drop procedure proc_getTransMoney
go
--创建无参数存储过程
create proc proc_getTransMoney
as
begindeclare @sum_money money        --交易总额declare @get_money money        --支出总额declare @sav_money money        --存入总额select @sum_money = sum(TransMoney) from TransInfoselect @get_money = sum(TransMoney) from TransInfo where TransType = '存款'select @sav_money = sum(TransMoney) from TransInfo where TransType = '取款'print '交易总额='+ltrim(convert(char,@sum_money))print '存入总额='+ltrim(convert(char,@sav_money))print '支出总额='+ltrim(convert(char,@get_money))
end
go
--执行存储过程
exec proc_getTransMoney
go/*
* 查询指定账户挂失的账户信息
*/
--判断存储过程是否存在
--存在则删除
if exists(select * from sysobjects where name = 'proc_getLostAccount')
drop procedure proc_getLostAccount
go
--创建带参数输出存储过程
create proc proc_getLostAccount
--
@CId varchar(20) OUTPUT
as
beginselect A.CustName as 姓名, A.IDCard AS 身份证号, A.TelePhone as 电话号码,C.CardID as 银行卡号,A.Address as 地址from AccountInfo as A inner join CardInfo as C on A.CustID = C.CustIDwhere C.CardID =@CId AND C.IsLost = '是'
end
go
--执行存储过程
declare @CardID  varchar(20);
set @CardID= '银行卡号';
exec proc_getLostAccount  @CardID output;
print @CardID;
go

*本文就介绍到这里。
如有疑问请联系我。*

原文来自:简书

关系数据库SQL之可编程性存储过程 1相关推荐

  1. 关系数据库SQL之可编程性存储过程

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数,本文来介绍一下存储过程的创建.执行.删除.(还是以前 ...

  2. 关系数据库SQL之可编程性触发器

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数.存储过程.事务,本文来介绍一下触发器的使用.(还是以 ...

  3. 关系数据库SQL之可编程性函数(用户自定义函数)

    前言 在关系型数据库中除了前面几篇基本的数据库和数据表操作之外,还提供了可编程性的函数.存储过程.事务.触发器及游标. 本文介绍的是函数. 函数分为两种: 系统函数 用户自定义函数 准备工作 这里以银 ...

  4. 存储过程中定义sql语句_学习SQL:用户定义的存储过程

    存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...

  5. SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...

  6. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Ma ...

  7. Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器

    ---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表.---查询语句创建表 create table emp as ...

  8. 关系数据库SQL面试排名前100道问答题

    RDBMS 是迄今为止最常用的数据库之一,因此SQL 技能在大多数工作角色中必不可少.在这篇 SQL 面试问题文章中,我将向您介绍有关 SQL(结构化查询语言)的最常见问题.本文是您学习与 SQL.O ...

  9. Oracle数据库第二课——使用PL/SQL进行初步编程,了解PL/SQL的相关知识

    知识点:了解PL/SQL的编程的基础:了解PL/SQL的注释:掌握PL/SQL的块结构:掌握PL/SQL的数据类型.运算符.字符集.标识符:掌握PL/SQL语句块的书写.变量的声明和赋值 1.PL/S ...

最新文章

  1. rar for linux缺少GLIBC_2.7
  2. linux网卡钩子,linux-Netfilter钩子注册与网络子系统
  3. 细说php--php学习必备
  4. 数据结构实验之链表五:单链表的拆分_JAVA
  5. .NET Core 3.0特性初探:C# 8、WPF、Windows Forms、EF Core
  6. TCP三次握手连接及seq和ack号的正确理解
  7. PAT1011 A+B 和 C (15 分)
  8. kafka php 0.8,php5.6 centos7 kafka0.8.1
  9. python 控制手机摄像头_python+open cv调用手机摄像头,保存文件
  10. 计算机 电工学简明教程,电工学简明教程复习要点
  11. java形式参数分别是基本类型和引用类型的调用
  12. sql优化的N种方法_持续更新
  13. 7.26 1004度度熊的午饭时光 百度之星题解
  14. 【记录】【0】好的博客,待整理
  15. 手机浏览器哪家强,这3款口碑极佳的浏览器值得一用
  16. 云数据库Mysql 购买和使用(腾讯云为例)
  17. python go高并发_天下武功为快不破,戏说Python与Go高并发争锋!
  18. mysql造1000万数据_MySQL制作具有千万条测试数据的测试库
  19. wms地图绘制工具_地图空间分析工具MapViewer下载-地图空间分析(MapViewer)下载v8.4.406 官方版-西西软件下载...
  20. JAVA spring hessian_Springboot写的Hessian例子

热门文章

  1. Codeforces 744C. Hongcow Buys a Deck of Cards(状压DP)
  2. python学习笔记7-模块、包
  3. Java字节流和字符流区别
  4. 第四次博客作业:bookstore缺陷报告
  5. 登陆注册重连 之 老掉牙的故事 新说法
  6. 好吧,如果一定要RESTFUL的DJANGO
  7. 汇编语言:第三章 寄存器(内存访问)
  8. django源码阅读
  9. 爱奇艺2020校招编程题汇总第一题(切方块问题)
  10. SpringCloud集成Security安全(Config配置中心)