SQL 存储过程入门(五)
好久没来博客园留下点东西,忙到找工作,最近把工作落实了。
最近公司的业务都是存储过程开发,发现去维护起来相当困难。
由于是维护项目,产品很久前都发布了,然而有一些修改,让我们去修改现在的逻辑,去看懂人家的逻辑是件痛苦的事情,况且对整个业务基本不了解,表的字段啊,
表之间的联系,都是云里雾里。然而,把业务逻辑写在存储过程里面,随便一个存储过程都是千儿八百行,表示很无奈。
这里就个人对存储过程的看法而言,
1,在存储过程写业务,不是合理的途径。
2,在SQL中写的SP,换到Oracle ,MySql中,都无法使用,移植性差。
3,调试虽然可以使用查询分析器,发现还是不好调试。
当然优点一大堆,什么效率高啊,速度快啊,安全性高啊,对于复杂计算确实是很方便,毕竟在c#算法中需要若干个sql语句,
在存储过程中就可以一步到位,这里就不多说了。
其实存储过程语法是很简单的,定义Declare,变量类型也就那些常用的varchar ,char ,int,bigint, 条件判断IF Else, While .里面是没有FOR循环这个概念的。
当然是用while循环已经非常足够了。
还有就是使用SQL中的系统函数,这个是相当方便
举个简单例子,如果要查询时间间隔等于好多的,或者是等于当前时间的,用过的都知道,时间有年月日时分秒毫秒,所以要等起来的话还是需要转换的,
比如用Convert(....)之类的,用系统函数方便多了,
Datediff()函数,获取时间差,
DATEDIFF ( datepart , startdate , enddate )
- datepart
-
是指定所跨边界类型的 startdate 和 enddate 的一部分。 下表列出了所有有效的 datepart 参数。 用户定义的变量等效项是无效的。
datepart
缩写
year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
hour
hh
minute
mi, n
second
ss, s
millisecond
ms
microsecond
mcs
nanosecond
ns
- startdate
-
是一个可以解析为 time、date、smalldatetime、datetime、datetime2 或 datetimeoffset 值的表达式。 date 可以是表达式、列表达式、用户定义的变量或字符串文字。 从 enddate 中减去 startdate。
为避免不确定性,请使用四位数年份。 有关两位数年份的信息,请参阅配置两位数年份截止服务器配置选项。
- enddate
-
请参阅 startdate。
int
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate -----
DiffDate
1 SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate ------
DiffDate
-1
DAY()、MONTH()和YEAR()函数
这三个函数分别返回以整数表示的datetime或者smalldatetime类型值的日、月、年。它们的用途很广泛,如可以创建独特的个性化日期格式。假设需要创建一个自定义的日期值作为字符串,通过将这三个函数的输出结果转换成字符类型,然后进行连接操作,就可以对输出结果以任何形式进行组合了:
SELECT 'Year: ' + CONVERT(varchar(4), YEAR(GETDATE()))
+ ', Month: ' + CONVERT(varchar(2), MONTH(GETDATE()))
+ ', Day: ' + CONVERT(varchar(2), DAY(GETDATE()))
The result:
Year: 2013, Month: 8, Day: 28
系统函数很多,具体的可以去查看MSDN,这个还真的好用。
所以,个人觉得存储过程比较实用的地方:
1,报表中,实用存储过程方便。
2,系统中复杂的运算,可以使用,否则在代码中需要若干计算,多次连接数据库,这样很消耗性能。
关于存储过程的所有文章基本就说到这了,希望能帮助正在学习的人,祝看博客的人天天有个好心情哈!
如果您有任何关于存储过程的问题和不同见解,欢迎留下你的足迹。
SQL 存储过程入门(五)的更多相关文章
- SQL 存储过程入门(事务)(四)
SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我 ...
- SQL 存储过程入门(事务)
本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果 ...
- SQL总结(五)存储过程
SQL总结(五)存储过程 概念 存储过程(Stored Procedure):已预编译为一个可执行过程的一个或多个SQL语句. 创建存储过程语法 CREATE proc | procedure pro ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
- openresty 前端开发入门五之Mysql篇
openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- SQL 存储过程(学生,课程表,选修表)
SQL 存储过程(学生,课程表,选修表) 一.存储过程的分类 在SQL Server中存储过程分过两类: 1)系统存储过程("sp_"作为前缀) 2)用户自定义存储过程 二.创建和 ...
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- MySQL存储过程入门
MySQL存储过程入门 在本教程中,我们将逐步介绍如何使用CREATE PROCEDURE语句开发第一个MySQL存储过程. 另外,我们将向您展示如何从SQL语句调用存储过程. 编写第一个MySQL存 ...
随机推荐
- Java使用POI读取和写入Excel指南
Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...
- Linux文件删除,但是df之后磁盘空间没有释放
Linux 磁盘空间总是报警,查到到大文件,删除之后,df看到磁盘空间并没有释放. 查找了下发现系统对rm进行了alias ,因为Linux对删除操作没有回收站机制,对rm操作进行了自定义,对删除 ...
- html5- 摘自网友dudu
HTML5中新增了<canvas>画布标签,通过它,可以使用JavaScript在网页中绘制图像.<canvas>标签在网页中得到的是一个矩形空白区域,可以通过width和he ...
- vs2015 企业版、专业版如何破解(秘钥)
安装完vs2015 企业版后,在菜单帮助---注册产品,显示产品试用期30天,怎么破解呢? 一.破解秘钥 企业版 HM6NR-QXX7C-DFW2Y-8B82K-WTYJV 专业版 HMG ...
- 微信小程序跨页面获取数据示例
index.wxml <navigator class="navs" url="{{urls}}"> 中国 </navigator> i ...
- URAL 1934 最短路变形
DES:给出起点和终点.给出所有小岛的编号.所有路径的起始点.和遇到怪物的概率.要求在最短路的条件下维护遇见怪物的概率最小的路径.就是用 SPFA算法.每条路的权值设为1.最短路即为途径的岛数最少.同 ...
- httpclient httpclient使用连接池
httpclient使用连接池 http协议是无状态的,但毕竟是基于tcp的,底层还是需要和服务器连接的, 对于需要从同一个站点抓取大量网页的程序,应该使用连接池,否则每次抓取都和web站点建立连接, ...
- 申请和使用github共享代码
1.申请github帐号 https://github.com/join?source=header-home 2.创建项目 2.1 或者: 2.2 输入信息 2.3创建成功,地址及基本命令提示 3. ...
- Flask初级(十)flash与前台交互post详解
Project name :Flask_Plan templates:templates static:static POST提交方式,首先要有表单 老实去改模板文件吧. 查询窗口我准备放在页面最顶上 ...
- Pycharm(四)常用快捷键
Ctrl + Alt +S 进入设置Ctrl + Alt + L 代码格式化Ctrl + Alt + I 自动缩进Ctrl + D 复制当前行 Ctrl + / 注释(取消注释)当前行 再有什么用的多 ...