public static PhysicalTask.SqlTask Lower(this AstTask.AstStoredProcNode astNode)
        {
            if (astNode.AsClassOnly)
            {
                return null;
            }

            try
            {
                PhysicalTSQL.StoredProc physicalStoredProc = new Ssis2008Emitter.IR.TSQL.StoredProc();
                physicalStoredProc.Body = astNode.Body;
                physicalStoredProc.ExecuteDuringDesignTime = astNode.ExecuteDuringDesignTime;
                physicalStoredProc.Name = astNode.Name;
                physicalStoredProc.Columns.Parent = physicalStoredProc;

                foreach (AstTask.AstStoredProcColumnNode column in astNode.Columns)
                {
                    PhysicalTSQL.StoredProcColumn physicalColumn = new Ssis2008Emitter.IR.TSQL.StoredProcColumn();
                    physicalColumn.Default = column.Default;
                    physicalColumn.IsOutput = column.IsOutput;
                    physicalColumn.Name = column.Name;
                    physicalColumn.Parent = physicalStoredProc;
                    physicalColumn.Type = Ssis2008Emitter.Emitters.TSQL.PhysicalTypeTranslator.Translate(column.Type, column.Length, column.Precision, column.Scale, column.CustomType);
                    physicalStoredProc.Columns.ColumnList.Add(physicalColumn);
                }

                TSQLEmitter.StoredProcPlatformEmitter storedProcEmitter = new TSQLEmitter.StoredProcPlatformEmitter();
                string storedProcBody = storedProcEmitter.Emit(physicalStoredProc);

                PhysicalTask.SqlTask sqlTask = new Ssis2008Emitter.IR.Task.SqlTask();
                sqlTask.Body = storedProcBody;
                AddConnection(astNode.Connection);
                sqlTask.Connection = astNode.Connection.Name;
                sqlTask.ExecuteDuringDesignTime = astNode.ExecuteDuringDesignTime;
                sqlTask.Name = astNode.Name;
                sqlTask.ResultSet = "None";
                sqlTask.Type = "File";

                return sqlTask;
            }
            catch (Exception e)
            {
                throw new SSISEmitterException(astNode, e);
            }
        }
Example #2
0
 public string Emit(StoredProc storedProc)
 {
     TemplatePlatformEmitter te = new TemplatePlatformEmitter("StoredProc", storedProc.Name, new StoredProcColumnsBuilder(storedProc.Columns).Build(), storedProc.Body);
     return te.Emit(storedProc);
 }