示例#1
0
        public static void CreateAndRegister(AstNode astNode, LoweringContext context)
        {
            var astQuerySourceNode = astNode as AstQuerySourceNode;
            if (astQuerySourceNode != null)
            {
                var oleDBSource = new OleDBSource(context, astNode) { _oleDBConnection = new OleDBConnection(astQuerySourceNode.Connection) };

                // Note: vsabella: workaround for different behavior regarding expressions for OLEDB sources 
                // versus how it works in Lookups.
                if (astQuerySourceNode.Query.QueryType == QueryType.Expression)
                {
                    // Variable name has to be only alphanumeric, more restrictive than astQuerySource Name
                    string varName = "__" + System.Guid.NewGuid().ToString("N");
                    var variable = new Variable(varName);
                    oleDBSource.SqlCommandVarName = "User::" + varName;

                    variable.TypeCode = System.TypeCode.String;
                    variable.EvaluateAsExpression = true;
                    variable.ValueString = astQuerySourceNode.Query.Body;
                    context.ParentObject.Children.Add(variable);
                }
                else
                {
                    foreach (AstVariableParameterMappingNode paramNode in astQuerySourceNode.Query.Parameters)
                    {
                        var variable = new Variable(paramNode.Variable);
                        oleDBSource._paramDictionary[paramNode.Name] = variable;
                        context.ParentObject.Children.Add(variable);
                    }
                }

                context.ParentObject.Children.Add(oleDBSource._oleDBConnection);
                context.ParentObject.Children.Add(oleDBSource);
            }
        }
示例#2
0
文件: Package.cs 项目: japj/vulcan
        public Package(AST.Task.AstPackageNode astNode)
            : base(astNode)
        {
            _DTSApplication = new DTS.Application();
            DtsPackage = new DTS.Package();
            DtsPackage.Name = StringManipulation.NameCleaner(Name);
            PackageType = String.IsNullOrEmpty(astNode.PackageType) ? "ETL" : astNode.PackageType;
            PackageFolder = astNode.PackageFolder;
            PackagePath = astNode.PackagePath;
            PackageProtectionLevel = astNode.ProtectionLevel;
            PackagePassword = astNode.PackagePassword;

            // vsabella: We thought about adding this in the Lowering phase.
            // The reason this was not placed in Lowering is that this variable must be available
            // before any other lowering can take place.  Additionally i needed a single place where the
            // variable name could remain constant and other lowering phase engines could refer to it.
            // PreEmit
            PackageRootVariable =
                new Variable(PackagePathRootVariableName)
                {
                    InheritFromPackageParentConfigurationString = "User::" + PackagePathRootVariableName,
                    ValueString = PathManager.TargetPath,
                    TypeCode = TypeCode.String
                };

            Children.Add(PackageRootVariable);
        }
 private static void AddVariable(Variable variable, Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ParameterDirections direction, PhysicalTask.SqlTask sqlTask)
 {
     PhysicalTask.ExecuteSQLParameter parameter = new PhysicalTask.ExecuteSQLParameter();
     parameter.Variable = variable;
     parameter.Direction = direction;
     parameter.OleDbType = GetVariableType(variable.Type);
     sqlTask.ParameterList.Add(parameter);
 }
        public static Variable Lower(this AstTask.AstVariableNode astNode)
        {
            if (astNode.AsClassOnly)
            {
                return null;
            }

            Variable variable = new Variable();
            variable.Name = astNode.Name;
            variable.Type = astNode.Type.ToString();
            variable.Value = astNode.Value;

            return variable;
        }
 private static Variable AddVariable(PhysicalTask.SequenceTask LogContainer, string name, Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ParameterDirections direction, PhysicalTask.SqlTask sqlTask, string type)
 {
     Variable variable = new Variable();
     variable.Name = LogContainer.Name + Resources.Seperator + name;
     variable.Type = type;
     variable.Value = "-1";
     AddVariable(variable, direction, sqlTask);
     return variable;
 }
示例#6
0
        public virtual OleDbType GetVariableType(Variable variable)
        {
            OleDbType retType = OleDbType.Empty;

            switch (variable.Type.ToUpper(System.Globalization.CultureInfo.InvariantCulture))
            {
                case "STRING": retType = OleDbType.WChar; break;
                case "INT32": retType = OleDbType.Integer; break;
                case "INT64": retType = OleDbType.BigInt; break;
                case "BOOLEAN": retType = OleDbType.Boolean; break;
                case "Byte": retType = OleDbType.Binary; break;
                case "Char": retType = OleDbType.Char; break;
                case "DateTime": retType = OleDbType.DBTimeStamp; break;
                case "DBNull": retType = OleDbType.Empty; break;
                case "Double": retType = OleDbType.Double; break;
                case "Int16": retType = OleDbType.SmallInt; break;
                case "SByte": retType = OleDbType.Binary; break;
                case "Single": retType = OleDbType.Single; break;
                case "UInt32": retType = OleDbType.UnsignedInt; break;
                case "UInt64": retType = OleDbType.UnsignedBigInt; break;

            }
            return retType;
        }
示例#7
0
 public static void LowerVariable(AstNode astNode, LoweringContext context)
 {
     var astVariable = astNode as AstTask.AstVariableNode;
     if (astVariable != null)
     {
         var v = new Variable(astVariable);
         context.ParentObject.Children.Add(v);
     }
 }
示例#8
0
 public SsisVariable(Variable variable, SSISEmitterContext context) : this(variable.Name, variable.Value, (DTS.DtsContainer)context.ParentContainer) { }
示例#9
0
 public SsisVariable(Variable variable) : this(variable.Name, variable.Value, (DTS.DtsContainer)null) { }