sql 中流程控制语句的关键字都有哪些

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 中流程控制语句的关键字都有哪些相关的知识,希望对你有一定的参考价值。

1、 BEGIN…END关键字也是流程控制语句需要用到的最基本关键字,用于将多个语句划分成逻辑上的一部分。

2、WHILE/BREAK/CONTINUE关键字
在T-SQL的流程控制语句中,循环语句只有WHILE循环,并没有传统高级语言的FOR和SWITCH循环。WHILE除了被用于流程控制语句的循环之外,还经常被用于游标之中。
WHILE关键字和高级语言中的WHILE关键字几乎完全一样。WHILE循环中可以利用BREAK和CONTINUE关键字对循环进行控制。
CONTINUE关键字用于结束本次循环,直接开始下一次循环。
BREAK关键字用于直接跳出WHILE循环语句。
这里值得注意的是,当WHILE循环嵌套时,CONTINUE关键字和BREAK关键字只会作用于它们所处的WHILE循环之内,不会对外部WHILE循环产生作用。

3、IF..ELSE关键字
IF..ELSE关键字实现了非此既彼的逻辑。

4、GOTO关键字
GOTO关键字因为能打乱程序的整个流程而在高级语言中臭名卓著。GOTO关键字的使用非常简单,定义一个跳转标签,只要GOTO 标签名就可以。

5、
RETURN关键字
Return是最简单有效直接无条件告诉服务器跳出某个批处理段(Batch),用户自定义函数和存储过程的方式。

6、
WAITFOR关键字

WAITFOR关键字允许指定语句在特定时间或是推迟特定时间执行。
推迟等待和在特定时间执行的语法分别是WAITFOR DELAY ‘需要等待的执行时间',WAITFOR TIME ‘需要执行程序的精确时间’追问

这些都是吗

追答

是的 。记得采纳哦。

参考技术A BEGIN...END

BREAK

GOTO

CONTINUE

IF...ELSE

WHILE

RETURN

WAITFOR

对于 SSIS 跨进程通信,我都有哪些选择?

【中文标题】对于 SSIS 跨进程通信,我都有哪些选择?【英文标题】:What options do I have for SSIS cross-process communication?对于 SSIS 跨进程通信,我有哪些选择? 【发布时间】:2011-03-03 16:30:13 【问题描述】:

我想存储一个递增和递减的整数变量(用于限制对外部 API 的并发请求的计数信号量)。这很容易,除非我需要一种方法从在并行 SQL 代理作业中运行的 SSIS 包中读取/写入此变量。现在可以有 0 到 5 个 SQL 代理作业实例,因此 SSIS 包同时运行。

我有哪些读取和写入此变量的选项?将使用此变量的代码在 .NET 中编写为自定义 SSIS 任务。

该值是否完全正确并不特别重要,只要它通常接近我在公差范围内。精确会很好,但不是必需的。

我可以访问整个文件系统、注册表、数据库、服务器和 SSIS 代理,但我想经常使用 15-30 个线程检查这个变量,这在历史上会导致使用文件出现问题系统方法(我可能做错了),并且 IMO 过于密集而无法存储在数据库中。如我错了请纠正我。存储在注册表中可防止变量在服务器场中被访问。

如果有人可以提供帮助,我很乐意成为您的契约仆人。

【问题讨论】:

只是想知道,这个值为什么不能存在于数据库表中?所有 5 个实例都应该能够读取它,如果适用,您必须使用适当的锁定,或者我可能过度简化您的问题?当您需要获取或更新值时,您可以通过 SqlClient 自定义任务中的代码来完成。 主要原因只是我正在与数据库交谈的数量。我上面的概述有些简化,因为这 5 个实例中的每一个都可以有多达 20 个线程,所有线程都在一个循环中访问该变量,等待该变量低于某个阈值。最坏的情况是每秒大约 100 个查询,假设我让线程休眠一整秒。现在他们正在休眠 100 毫秒等待本地进程变量。希望这会有所帮助。 【参考方案1】:

如果用作计数信号量,为什么不实际使用 Windows 信号量对象呢? System.Threading.Semaphore 是它的 .NET 版本,如果您在构造函数中指定信号量名称 - Win32 对象将在使用此名称的所有进程之间共享。

【讨论】:

你就是那个男人。感谢您提供的信息——我希望几个月前我能知道这门课。由于某种原因,它在搜索过程中从未出现过。当我回到工作岗位时,我会试一试。【参考方案2】:

不确定我是否理解这个问题 - 您表示您可以访问数据库、文件系统、注册表等。您是说您不想/不能使用这些方法吗?您是否希望保留该值,以便在计算机停止运行时可以恢复?

如果不需要持久性,您可以通过 RPC(包括 COM 或 Web 服务)在内存中持久化。无论采用何种解决方案,它似乎都需要是全局的并且对所有正在运行的实例都是可见的。

这个变量元数据是用作信号量来控制和协调流程,还是这个变量域数据?

【讨论】:

我正在寻找有关如何使用上述任何方法的输入,或者任何我不知道的可用于控制对该变量的访问的输入。它确实是一个计数信号量,用于协调对外部 API 的并发请求数。不需要持久性,因为我有一个排队系统,如果出现故障,它会从中断的地方继续。 有很多概念需要考虑。外部进程是否使用多个线程进行操作,或者外部进程的多个实例是否都使用单个线程进行操作?如果外部进程包含多个线程(并假设此外部进程是可变的),您可以添加一个计数器来计算线程数,在外部进程中包含一个适当的接口来检索计数。如果外部进程不是多线程的,而是具有单线程的,具有多个实例的进程计数的使用将提供这些详细信息。

以上是关于sql 中流程控制语句的关键字都有哪些的主要内容,如果未能解决你的问题,请参考以下文章

mysql之流程控制语句

JS 中流程控制

数据库常用sql语句都有哪些

数据库常用sql语句都有哪些

JAVA语言中流程控制(顺序结构判断语句循环语句)

数据库语言都有哪些