脚本中IF语句执行逻辑的困惑.

ltolll ltolll 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在SQL Server Management Studio中执行脚本的时候会有一个当前数据库的概念, 为了防止误操作我用脚本判断, 当前数据库和待操作数据库是否一致, 如果一致, 则新建一个表, 并插入数据. 脚本代码如下:


-- 待操作数据库
DECLARE @dbName nvarchar(20);
SET @dbName='as2018';

-- 当前数据库
DECLARE @curdbName nvarchar(20);
SET @curdbName=(SELECT DB_NAME());

PRINT(@curdbName)

IF @curdbName=@dbName
Begin

PRINT '已选中目标数据库 ' + @dbName;

/****** Object: Table [dbo].[PriceWay] Script Date: 01/02/2019 08:36:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PriceWay](
[Id] [smallint] NOT NULL,
[Name] [varchar](20) NULL,
CONSTRAINT [PK_PriceWay] PRIMARY KEY NONCLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[PriceWay] ([Id], [Name]) VALUES (1, N'移动平均')
INSERT [dbo].[PriceWay] ([Id], [Name]) VALUES (2, N'先进先出')
INSERT [dbo].[PriceWay] ([Id], [Name]) VALUES (3, N'后进先出')

End



F5执行脚本, 发现当前数据库即使不是'as2018'时也不提示, 仍然执行IF内的脚本, 且报错:
消息 102,级别 15,状态 1,第 17 行
'ON' 附近有语法错误。
...

不知什么原因.
...全文

相关推荐

Linux shell脚本编程if语句的使用方法(条件判断)

主要介绍了Linux shell脚本编程if语句的使用方法,大家参考使用吧

weixin_38697940

Shell脚本if else语句小结

主要介绍了Shell脚本if else语句小结,总结了Shell脚本中的if控制语句和其它语言的不同,常见的3种写法等,需要的朋友可以参考下

weixin_38737521

Shell脚本的条件测试和if条件语句使用方法

一、条件测试操作 要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值(¥?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,包括以下两种形式: test 条件表达式 [ 条件表达式 ] 这两种方式的作用完全相同,但通常后一种形式更为常用,需要注意的是,方括号“[“ 或 ”]”与条件表达式之间需要至少一个空格进行分隔。 1、文件测试:

weixin_38507923

关于C# if语句中并列条件的执行

C#语言中也是如此。当多个条件进行逻辑与操作的时候,判定会从表达式左边执行到右边,遇到任何一个为假,后面就都不做了。这很聪明,然而如果后面的条件会抛出异常,就是个潜在的问题。一旦之前的条件为真,就会继续执行,执行到抛出异常的条件时,程序就爆了,哈哈。 我们可以写个简单的demo试试。下面的这段代码是坑爹的,之后我会说明原因,但大家可以先从直观的层面上理解一下,最后我会给出正确的测试方法。 代码如下: static void Main(string[] args) { DataSet ds = null; if (false && ds.Tables[0].Rows.Count > 0) {

weixin_38520258

c语言if语句实例_C语言if语句和switch语句实例_If..._

1、.了解C语言的逻辑运算2、.学会使用if语句和switch语句3、.熟练掌握选择结构程序设计方法

余淏
评论 10
收藏 已收藏
分享
返回顶部
ltolll
MS-SQL Server 34,876 成员 254,635 内容