sql - 是否有相当于返回的 SQL?
问题描述
考虑以下 SQL
SET DATEFORMAT ymd
SET ARITHABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, NOCOUNT ON
SET NUMERIC_ROUNDABORT, IMPLICIT_TRANSACTIONS, XACT_ABORT OFF
GO
USE master
GO
IF DB_NAME() <> N'master' SET NOEXEC ON
--
-- Create database [myDatabaseName]
--
PRINT (N'Create database [myDatabaseName]')
GO
CREATE DATABASE myDatabaseName
然后有一个很长的脚本来设置表、视图、存储过程等。
我想知道 SQL 是否允许以下伪代码之类的东西;
If (myDatabaseName Exists)
Return // in other word abort the script here but don't throw an error
Else
//Carry on and install the database
我知道 SQL 中的 Exists 函数,但我似乎找不到任何可以直接中止脚本剩余部分的东西。
该脚本将在安装例程中结束。从理论上讲,它永远不应该在数据库已经存在的安装程序中,但是我不希望冒险并为潜在的错误做好适当的准备。脚本不会抛出任何错误也很重要,因为这只会导致安装程序回滚并且什么都不安装。
我希望 SQL 中存在一些东西,如果满足特定条件,它就会干净地退出脚本。退出我的意思是退出,而不是简单地打破当前正在评估的条件。
解决方案
您可以按如下方式使用 GOTO:
If (myDatabaseName Exists)
GOTO QUIT; // in other word abort the script here but don't throw an error
Else
//Carry on and install the database
QUIT:
SELECT 0;
推荐阅读
- r - which() 函数的结果 *always* 是有序的吗?
- python - 在树莓派中下载 TensorFlow
- c# - 使用与表无关的方法实现通用存储库
- excel - Power Query 填写空单元格单元新值,然后填写该值
- ios - 将 JSON 提取到 ViewController 并转到第二个 ViewController
- python - python 3.6中安装的库如何在python3.7中使用
- python - WEKA 中的交叉验证和 SMOTE
- java - Gradle 找不到 Apache 公共资源
- java - 向后计数Java的匹配字符数组值
- javascript - 节点流 - 推送读取无意中分成 3 个写入流