第十四篇 SQL游标、函数的使用方法
T-SQL中的游标定义在MSDN中如下:
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
[;]
ALTER PROCEDURE [dbo]. [XXXX]
) ---流程名
AS
DECLARE @tempIncident INT
)
) ---实例号
)--- 单号
DECLARE @taskCnt INT ---task为的数量
DECLARE @flag INT
DECLARE @bflag INT
----定义一个游标--
----定义游标和定义一个变量是差不多的,不过后面要指定一个的查询语句,
DECLARE mycur CURSOR
FOR
( SELECT bic. BI_Code ,----这时两个的数据是要使用的数据
bic.BI_Incident
FROM xxxxx AS inc ,
bic AS bic
WHERE inc .PROCESSNAME = bic .BI_ProcessName
AND INCIDENT = bic.BI_Incident
AND PROCESSNAME = @ProcessName
)
)
OPEN mycur--打开这个游标
FETCH NEXT FROM mycur INTO @tempCode, @tempIncident ---把值放到变量中
--循环这个值
--这是一个系统的取游标值的一个变量
BEGIN
SELECT @taskCnt = COUNT(*)
FROM xxxxx
WHERE INCIDENT = @tempIncident
AND PROCESSNAME = @ProcessName
---有task=1 的数据则是可以自动处理的
BEGIN
BEGIN
SET @incident = CAST(@tempIncident AS NVARCHAR)
END
ELSE
SET @incident = @incident + ','
+ CAST (@tempIncident AS NVARCHAR )
END
ELSE
BEGIN
SET @bicode = @tempCode
ELSE
SET @bicode = @bicode + ',' + @tempCode
END
---这里的是把数据再次放到变量里面,以便循环的使用
FETCH NEXT FROM mycur INTO @tempCode, @tempIncident
END
CLOSE mycur
DEALLOCATE mycur
IF @bicode IS NULL
SET @bicode = 'NULL'
IF @incident IS NULL
SET @incident = 'NULL'
ELSE
UPDATE xxxxx
WHERE PROCESSNAME = @ProcessName
AND INCIDENT IN ( SELECT value
FROM dbo .fn_Split( @incident, ',') )
SQL 函数的使用:
函数在SQL中的使用提高了SQL代码的重复利用,也方便我们更高效的去用SQL做更多的事:下面我就对标量的函数进行说明,其它的东西也基本上是大同小异.
、标量函数
Create function 函数名(参数)
Returns 返回值数据类型
[with {Encryption | Schemabinding }]
[as]
begin
SQL语句(必须有return 变量或值)
例如:
), ) = ' ') ) COLLATE SQL_Latin1_General_CP1_CI_AS )
这样就是把一个函数的基本形式定义好了 如同在代码中写出 public string get(){}
后面的代码也就是日常的sql查询或者是一些的特殊的处理
), ) = ' ')
) COLLATE SQL_Latin1_General_CP1_CI_AS )
AS
BEGIN
DECLARE @idx smallint ,
),
@bcontinue bit,
@iStrike smallint,
@iDelimlength tinyint
IF @sDelim = 'Space'
BEGIN
SET @sDelim = ' '
END
SET @sText = LTrim(RTrim (@sText))
SET @iDelimlength = DATALENGTH(@sDelim )
) or (@sDelim = 'Empty'))
BEGIN
BEGIN
--If you can find the delimiter in the text, retrieve the first element and
--insert it with its index into the return table.
BEGIN
, )
BEGIN
INSERT @retArray (idx , value )
VALUES (@idx , @value )
END
--Trim the element and its delimiter from the front of the string.
--Increment the index and loop.
SET @iStrike = DATALENGTH(@value ) + @iDelimlength
SET @sText = LTrim(Right(@sText ,DATALENGTH( @sText) - @iStrike ))
END
ELSE
BEGIN
--If you can’t find the delimiter in the text, @sText is the last value in
--@retArray.
SET @value = @sText
BEGIN
INSERT @retArray (idx , value )
VALUES (@idx , @value )
END
--Exit the WHILE loop.
END
END
END
ELSE
BEGIN
BEGIN
--If the delimiter is an empty string, check for remaining text
--instead of a delimiter. Insert the first character into the
--retArray table. Trim the character from the front of the string.
--Increment the index and loop.
BEGIN
, )
BEGIN
INSERT @retArray (idx , value )
VALUES (@idx , @value )
END
, )
END
ELSE
BEGIN
--One character remains.
--Insert the character, and exit the WHILE loop.
INSERT @retArray (idx , value )
VALUES (@idx , @sText )
END
END
END
RETURN
END
第十四篇 SQL游标、函数的使用方法的更多相关文章
- 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)
解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...
- 第十四篇 Integration Services:项目转换
本篇文章是Integration Services系列的第十四篇,详细内容请参考原文. 简介在前一篇,我们查看了SSIS变量,变量配置和表达式管理动态值.在这一篇,我们使用SQL Server数据商业 ...
- JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...
- 【译】第十四篇 Integration Services:项目转换
本篇文章是Integration Services系列的第十四篇,详细内容请参考原文. 简介在前一篇,我们查看了SSIS变量,变量配置和表达式管理动态值.在这一篇,我们使用SQL Server数据商业 ...
- Spring Cloud第十四篇 | Api网关Zuul
本文是Spring Cloud专栏的第十四篇文章,了解前十三篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring C ...
- Python之路【第十四篇】:AngularJS --暂无内容-待更新
Python之路[第十四篇]:AngularJS --暂无内容-待更新
- 跟我学SpringCloud | 第十四篇:Spring Cloud Gateway高级应用
SpringCloud系列教程 | 第十四篇:Spring Cloud Gateway高级应用 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 ...
- SpringBoot第二十四篇:应用监控之Admin
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 前一章(S ...
- Egret入门学习日记 --- 第十四篇(书中 5.4~5.6节 内容)
第十四篇(书中 5.4~5.6节 内容) 书中内容: 总结 5.4节 内容重点: 1.如何编写自定义组件? 跟着做: 重点1:如何编写自定义组件? 文中提到了重要的两点. 好,我们来试试看. 第一步, ...
随机推荐
- UVa 10132 - File Fragmentation
题目大意:有n个相同的文件,每个文件从中间分为两半,现在给你这2n个文件碎片,求原来完整的文件. 找出文件碎片长度的最大值和最小值,二者相加可得到原来文件的长度len.然后逐个进行拼接,将拼接后长度等 ...
- NGINX location 配置
location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进 ...
- Angular - - $interval 和 $timeout
$interval window.setInterval的Angular包装形式.Fn是每次延迟时间后被执行的函数. 间隔函数的返回值是一个承诺.这个承诺将在每个间隔刻度被通知,并且到达规定迭代次数后 ...
- Eclipse设置Tab键为空格!
http://z-hua.iteye.com/blog/1056713 今天设置Eclipse中按Tab键为4个空格,这里标记下! Window-->Preferences-->Java- ...
- 初识Dapper
16年年底开发一个项目,拍卖的项目,对于我这个不入流的程序员来说,雪微是个挑战.程序猿这个行业就是学到老用到老吧.个人比较喜欢sql原生的写法,对EF 还是不怎么感冒,EF 虽然强大,但是用起来还不怎 ...
- 【python基础】之list列表
python提供了一个被称为列表的数据类型,他可以存储一个有序的元素集合. 记住:一个列表可以存储任意大小的数据集合.列表是可变对象,有别于字符串str类,str类是不可变对象. 1.创建一个列表 l ...
- [css]《css揭秘》学习笔记(一)
一.background-clip属性 <html> <head> <meta charset="utf-8"> <title>背景 ...
- 虚拟机网络配置详解(NAT、桥接、Hostonly)
VirtualBox中有四种网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实它跟VMWare的网络连接方式都是一 ...
- 笑谈ArcToolbox (4) 非我族类
笑谈ArcToolbox (4) 非我族类 by 李远祥 ArcToolbox的工具既能直接对数据源进行处理,也能对图层以及被选择要素进行处理.但有些数据看起来是空间数据,但实际上在处理的时候还是会出 ...
- Openstack容器项目之Magnum
本文以Newton版本为例. 1.Magnum简介 Magnum项目通过Openstack API能够在Openstack中创建基于容器的服务,但它本身并不直接对容器进行操作,而是通过Kubernet ...