SSIS -- 在声明局部变量“If”之前不能使用它

本文关键字:不能 If 声明 局部变量 SSIS | 更新日期: 2023-09-27 18:34:21

我在SQL Server 2008下的SSIS(BIDS)工作。 在我的控制流中,我正在测试文件是否存在(通过脚本任务),然后再移动到数据流任务。 我的脚本任务中的 If-then-Else 语句有问题。 Visual Studio抛出了一个警告,指出它"在声明之前不能使用局部变量'If'"。 我不知道为什么会发生这种情况。 有什么建议吗? 下面是我的代码:

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
namespace ST_2f8cf79f6fe0443b9c09c453433a0258.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion
        public void Main()
        {
            If (File.Exists(CStr(Dts.Variables("PVR_file_path").Value))) Then
                Dts.TaskResult = Dts.Results.Success
            Else
                Dts.TaskResult = Dts.Results.Failure
            End If
        }
    }
}

SSIS -- 在声明局部变量“If”之前不能使用它

您似乎已将VB.Net用于if但其余代码在C# 中。将Main方法更改为类似的东西应该可以解决问题:

public void Main()
{
    if (File.Exists(Dts.Variables["PVR_file_path"].Value.ToString()))
    {
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    else
    {
        Dts.TaskResult = (int)ScriptResults.Failure;
    }
}

稍微解释一下:

  • 我已将for循环更改为 C# 语法。
  • Dts.Variables是一个集合,因此偏执变成方括号。要将其转换为字符串,您可以调用ToString()而不是使用C#中不存在的CStr
  • 最后,我将结果更改为使用生成的代码中定义的enum