第十四篇 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:如何编写自定义组件? 文中提到了重要的两点. 好,我们来试试看. 第一步, ...
随机推荐
- Ubuntu安装飞鸽传输
飞鸽传书下载地址 http://www.ipmsg.org.cn/ipmsg/download.html 下载以后解压压缩包,会有一个可执行文件,executable文件. ./Qipmsg 如果没报 ...
- 外显率&显性上位
外显率(penetrance): 外显率是指条件下,群体中某一基因型(通常在杂合子状态下)个体表现出相应表型的百分率.外显率等于100%时称为完全外显(complete penetranc)低于100 ...
- 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节
CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...
- file_get_contents无法请求https连接的解决方法
PHP.ini默认配置下,用file_get_contents读取https的链接,就会如下错误: Warning: fopen() [function.fopen]: Unable to find ...
- 如何选择面向移动设备的html5开发框架
很久以前整理了篇将手机网站做成手机应用的JS框架.时隔一年多,很多新的技术已经出现,下面再来总结下还有哪些框架是适合面向手机设备的开发的. 1.jQuery Mobile jQuery Mobile ...
- CFD-post的奇技淫巧
此处记录两个后处理美化的技巧:1.关于contour显示的美化:2.关于legend的显示美化 1. 直接举例说明,现在cfd-post里导入了一个二维case,先建立一个plane: apply以后 ...
- Unity基础学习-Unity概述
Unity 概述 Unity是一个强大的引擎,里面包括大量的工具用来满足各种各样的需求.Unity的编辑器是直观的可定制的,让您在您的工作流中有较大的自由度. 本小节是开始学习Unity的关键部分.里 ...
- CodeForces 446B
DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 用php进行md5解密的源码,亲测可用
<?php $md5 = "c1c95b382230eb9e27a60c4baceb5f2e"; $uid = "hhp-ImZRY"; $token = ...
- 分布式搜索之搭建Solrcloud(Solr集群)
Solrcloud介绍: SolrCloud(solr集群)是Solr提供的分布式搜索方案. 当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud. 当索引量很大,搜索请求并发很高时,同 ...