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
}
}
}
您似乎已将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
。