T-Sql(三)存储过程(Procedure)
今天讲下T-sql语法中存储过程的用法,我们一开始学习数据库语言的时候就是用一些简单的insert,select等语法,但是随着我们学习数据库的深入,就会发现一些简单的语法满足不了我们的要求,比如处理一些业务逻辑,多表关联的时候,还有就是虽然程序或是简单的sql语句也会实现其效果,但是性能或是效率会很低。
这时候我们就会用到T-sql中的存储过程,存储过程就像C#中的方法一样,传递参数,执行一些操作,返回相应的值。
我们用SQLSERVER2008自带的AdventureWorks示例数据库来讲解。
首先我们新建一个存储过程,关键字为Procedure,示例代码:
create procedure proc_Sales_SalesReason
as
begin
select * from Sales.SalesReason;
end
我们新建的一个proc_Sales_SalesReason存储过程,执行查询操作,一般存储过程命名为proc_+名称,这样有利于识别。
执行存储过程示例代码:
execute proc_Sales_SalesReason drop procedure proc_Sales_SalesReason --删除存储过程
修改存储过程的话用alter关键字。
以上只是简单的存储过程,就想无参数的方法一样,下面是带参数的示例代码:
create procedure proc_Sales_SalesReason
(@SalesReasonID int,
@Name nvarchar(50),
@ReasonType nvarchar(50),
@ModifiedDate datetime)
as
begin
insert into Sales.SalesReason(SalesReasonID, Name, ReasonType, ModifiedDate)
values(@SalesReasonID, @Name, @ReasonType, @ModifiedDate);
end
这是一个执行插入数据的存储过程,执行示例代码:
execute proc_Sales_SalesReason 100,'text1','as','2011-12-12';
以上讲解的都是一些简单存储过程的用法,在这里只是起到抛砖引玉的作用,大家可以有时间好好研究下,去处理一些复杂的业务逻辑。
下面我做了一个小示例
select :按价格范围来查询
要求:如果两个参数均存在,则表示查询该指定范围的内容;
若均不存在,则查询所有
若@PriceFrom参数存在,则,查询>=@PriceFrom
@priceTo存在,则<=@priceTo
create procedure proc_SelectProductsWithPriceRange
(
@PriceFrom money,
@priceTo money
)
as
begin
if @PriceFrom is not null
begin
if @priceTo is not null
begin
select *from dbo.Products
where Price between @PriceFrom and @priceTo;
end
else
begin
select *from dbo.Products
where Price>=@PriceFrom;
end
end;
else
begin
if @priceTo is not null
begin
select *from dbo.Products
where Price<=@priceTo;
end
else
begin
select *from dbo.Products
end
end
end;
执行存储过程:
execute proc_SelectProductsWithPriceRange 17,null
其实这些代码都是大学时候学习的时候整理的,现在写这些算是去复习一下,也想去帮助那些刚刚踏入编程行业的学子们(大牛们请飘过),我想在年前把这两年整理的一些编程知识系统的整理下来,当然都是一些简单的,并附一些示例,希望帮助初学者去理解,还希望大家关注一下。。。
T-Sql(三)存储过程(Procedure)的更多相关文章
- PL/SQL 05 存储过程 procedure
--存储过程(不带参数) create or replace procedure 存储过程名as 变量.常量声明;begin 代码;end; --存储过程(带输入参数) create or rep ...
- sql server 存储过程 procedure
https://www.cnblogs.com/selene/p/4483612.html
- SQL Server 数据库的维护(一)__存储过程(procedure)
--维护数据库-- --存储过程(procedure)-- --概述: SQl Serve的存储过程是由一个或多个T-SQL语句组成的一个集合.常用的程序代码段通常被创建成存储过程,一次创建多次调用, ...
- [转]SQL Server 存储过程 一些常用用法(事物、异常捕捉、循环)
最新更新请访问: http://denghejun.github.io Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中 ...
- 使用PL/SQL编写存储过程访问数据库
一.实验目的 熟悉使用存储过程来进行数据库应用程序的设计. 二.实验内容 对学生-课程数据库,编写存储过程,完成下面功能: 1.统计离散数学的成绩分布情况,即按照各分数段统计人数: 2.统计任意一门课 ...
- [转]关于SQL分页存储过程的分析
[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用 ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- sql server 存储过程使用游标记录
sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...
- SQL Server存储过程 对数组参数的循环处理
方法一 分割 例:通过SQL Server存储过程传送数组参数删除多条记录 eg. ID 值为'1,2,3' 以下存储过程就是删除表中id号为1,2,3的记录: CREATE PROCEDURE De ...
- sql 在存储过程中使用事务(转)
本来想自己写一下,后来发现这个写的比我理解的要好,所以直接拽过来了,链接地址:https://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737 ...
随机推荐
- 7_nodejs angularjs
webstrom使用: ctrl+b/点击,代码导航,自动跳转到定义 ctrl+n跳转指定类 ctrl+d复制当前行ctrl+enter另起一行ctrl+y删除当前行 ctrl+alt/shift+b ...
- jasmine入门
本文来自http://blog.fens.me/nodejs-jasmine-bdd 粉丝日志 张丹 前言TDD(Test Driven Development)测试驱动开发,是敏捷开发中提出的最 ...
- hexo建个人博客
已经在腾讯云获得了域名和服务器,想着既然已经这样了,就折腾折腾自己的个人博客主页吧. 考虑再三决定用github pages来实现我的博客.github Pages可以被认为是用户编写的.托管在git ...
- PHP uniqid 高并发生成不重复唯一ID
http://www.51-n.com/t-4264-1-1.html PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环代码)的情 ...
- 完善ecshop的mysql类
前篇文章中,我提及到了如何<提取ecshop的mysql类>.但是没有数据库前缀的写法 废话不说,上步骤(目录结构请参考提取ecshop的mysql类) 修改connfig.php为 &l ...
- 学习笔记:delphi多线程知识
最近一直在温习旧的知识,刚好学习了一下Java的线程安全方面的知识,今天想起之前一直做的Delphi开发,所以还是有必要温习一下,看看这些不同的编程语言有什么不同之处. Delphi的线程同步方法: ...
- 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介
ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一 ...
- .Net开发笔记(二十)创建一个需要授权的第三方组件
在使用需要授权的软件时,注册付费的目标是软件的使用者,我们开发人员平时用到的一些第三方组件也是需要授权付费的,也就是说,付费者是开发人员,并不是系统(使用了该第三方组件)的最终使用者. 以上两者的区别 ...
- ASP.NET Web API路由系统:路由系统的几个核心类型
虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除 ...
- Hibernate 3.3.2 文档翻译 Day01
Hibernate 3.3.2 文档翻译 翻译人:微冷的雨 第一次书写:2015年11月29日 本人呕心沥血之作,请细心阅读领悟! Day01-1.1 项目描述 微冷的雨翻译:例如,我们将要建立一个可 ...