无法在 SQL 数据工具脚本中应用相等“运算符 '==' 不能应用于 'bool' 类型的操作数” (FIX)

Posted

技术标签:

【中文标题】无法在 SQL 数据工具脚本中应用相等“运算符 \'==\' 不能应用于 \'bool\' 类型的操作数” (FIX)【英文标题】:Cannot apply equality in SQL Data Tools scripts "Operator '==' cannot be applied to operands of type 'bool'" (FIX)无法在 SQL 数据工具脚本中应用相等“运算符 '==' 不能应用于 'bool' 类型的操作数” (FIX) 【发布时间】:2021-05-06 12:11:54 【问题描述】:

无法在 SQL Data Tools 脚本中应用相等性。 目的:建立一个变量,在不需要做任何事情时用作优雅的退出

错误

"Operator '==' cannot be applied to operands of type 'bool'" 
Only assignment, call, increment, decrment, await, and new object expressions can be uses as statement

代码:

String recfil=Dts.Variables["User::FolderPath"].Value.ToString() + Dts.Variables["User::RecfileName"0.Value.ToString();
int recfilExists=Convert.ToInt32(File.Exists(recfil));
bool goodRun = irecfilExists.Equals(1)
bool noRun = irecfilExists.Equals(0)

if (goodRun)

Dts.Variables["User::NothingToDo"].Value == goodRun;
Dts.TaskResult = (int)ScriptResults.Success;

else

Dts.Variables["User::NothingToDo"].Value == noRun;   
Dts.TaskResult = (int)ScriptResults.Failure;

【问题讨论】:

【参考方案1】:

虽然绝对不是最佳答案,但

    if (goodRun || noRun)
      
            if (goodRun)
            
               Dts.Variables["User::FileCount"].Value = 1;
            
            else
            
               Dts.Variables["User::FileCount"].Value = 0;
            
            Dts.TaskResult = (int)ScriptResults.Success;
        
   else
      
           Dts.TaskResult = (int)ScriptResults.Failure;
      

然后在控制流中,在 Success 上添加选择函数,它将文件计数引用为 1 或 0。如果没有文件,则优雅退出,否则通过控制流工作。

【讨论】:

以上是关于无法在 SQL 数据工具脚本中应用相等“运算符 '==' 不能应用于 'bool' 类型的操作数” (FIX)的主要内容,如果未能解决你的问题,请参考以下文章

使用 UNION 时无法识别 json[] 类型的相等运算符

pl/sql 美元运算符?

SQL运算符

将 SQL 部署脚本构建到应用程序中?

Oracle导出包含clob字段的sql脚本工具

SQL脚本IN在EF中的应用