protected override void BuildEmptyInsert(SqlInsertClause insertClause)
 {
     StringBuilder.Append("VALUES");
     foreach (var col in insertClause.Into.Fields)
     {
         StringBuilder.Append("(DEFAULT)");
     }
     StringBuilder.AppendLine();
 }
Esempio n. 2
0
 protected override void BuildGetIdentity(SqlInsertClause insertClause)
 {
     if (Version == DB2Version.zOS)
     {
         StringBuilder
         .AppendLine(";")
         .AppendLine("SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1");
     }
 }
Esempio n. 3
0
        protected override void BuildGetIdentity(SqlInsertClause insertClause)
        {
            var identityField = insertClause.Into !.GetIdentityField();

            if (identityField == null)
            {
                throw new SqlException("Identity field must be defined for '{0}'.", insertClause.Into.Name);
            }

            AppendIndent().AppendLine("RETURNING");
            AppendIndent().Append("\t");
            BuildExpression(identityField, false, true);
        }
Esempio n. 4
0
        protected override void BuildGetIdentity(SqlInsertClause insertClause)
        {
            var identityField = insertClause.Into !.GetIdentityField();

            if (identityField == null)
            {
                throw new SqlException("Identity field must be defined for '{0}'.", insertClause.Into.NameForLogging);
            }

            AppendIndent().AppendLine("RETURNING ");
            AppendIndent().Append('\t');
            BuildExpression(identityField, false, true);
            StringBuilder.AppendLine(" INTO :IDENTITY_PARAMETER");
        }
Esempio n. 5
0
        protected override void BuildGetIdentity(SqlInsertClause insertClause)
        {
            var identityField = insertClause.Into !.GetIdentityField();

            if (identityField != null && (identityField.Type !.Value.DataType == DataType.Guid || SqlServerConfiguration.GenerateScopeIdentity == false))
            {
                StringBuilder
                .AppendLine();
                AppendIndent()
                .Append("SELECT ");
                Convert(StringBuilder, identityField.PhysicalName, ConvertType.NameToQueryField);
                StringBuilder.Append(" FROM ");
                AppendOutputTableVariable(insertClause.Into)
                .AppendLine();
            }
Esempio n. 6
0
        protected override void BuildOutputSubclause(SqlStatement statement, SqlInsertClause insertClause)
        {
            if (insertClause.WithIdentity)
            {
                var identityField = insertClause.Into.GetIdentityField();

                if (identityField != null && (identityField.DataType == DataType.Guid || SqlServerConfiguration.GenerateScopeIdentity == false))
                {
                    StringBuilder
                    .Append("OUTPUT [INSERTED].")
                    .Append(Convert(identityField.PhysicalName, ConvertType.NameToQueryField))
                    .AppendLine();
                    AppendIndent()
                    .Append("INTO ");
                    AppendOutputTableVariable(insertClause.Into)
                    .AppendLine();
                }
            }
        }
Esempio n. 7
0
        protected override void BuildMergeOperationInsert(SqlMergeOperationClause operation)
        {
            StringBuilder
            .AppendLine()
            .AppendLine("WHEN NOT MATCHED THEN")
            .Append("INSERT");

            var insertClause = new SqlInsertClause();

            insertClause.Items.AddRange(operation.Items);

            BuildInsertClause(new SqlInsertOrUpdateStatement(null), insertClause, null, false, false);

            if (operation.Where != null)
            {
                StringBuilder.Append(" WHERE ");
                BuildSearchCondition(Precedence.Unknown, operation.Where);
            }
        }
Esempio n. 8
0
        protected override void BuildInsertQuery(SqlStatement statement, SqlInsertClause insertClause, bool addAlias)
        {
            if (insertClause.WithIdentity)
            {
                var identityField = insertClause.Into !.GetIdentityField();

                if (identityField != null && (identityField.Type !.Value.DataType == DataType.Guid || SqlServerConfiguration.GenerateScopeIdentity == false))
                {
                    AppendIndent()
                    .Append("DECLARE ");
                    AppendOutputTableVariable(insertClause.Into)
                    .Append(" TABLE (");
                    Convert(StringBuilder, identityField.PhysicalName, ConvertType.NameToQueryField);
                    StringBuilder.Append(' ');
                    BuildCreateTableFieldType(identityField);
                    StringBuilder
                    .AppendLine(")")
                    .AppendLine();
                }
            }

            base.BuildInsertQuery(statement, insertClause, addAlias);
        }
Esempio n. 9
0
 protected override void BuildInsertQuery(SqlStatement statement, SqlInsertClause insertClause, bool addAlias)
 {
     if (statement is SqlStatementWithQueryBase withQuery && withQuery.With?.Clauses.Count > 0)
     {
         BuildInsertQuery2(statement, insertClause, addAlias);
     }
Esempio n. 10
0
 protected override void BuildGetIdentity(SqlInsertClause insertClause)
 {
     //if (Version == DB2Version.zOS) {
     //  base.StringBuilder.AppendLine(";").AppendLine($"SELECT {AS400Tools.IdentityColumnSql} FROM {AS400Tools.DummyTableName()}");
     //}
 }
Esempio n. 11
0
 protected override void BuildGetIdentity(SqlInsertClause insertClause)
 {
     StringBuilder
     .AppendLine()
     .AppendLine("SELECT @@IDENTITY");
 }
Esempio n. 12
0
 protected override void BuildEmptyInsert(SqlInsertClause insertClause)
 {
     StringBuilder.AppendLine("VALUES ()");
 }
Esempio n. 13
0
 protected override void BuildOutputSubclause(SqlStatement statement, SqlInsertClause insertClause)
 {
     // OUTPUT clause is only supported by the MS SQL Server starts with 2005 version.
 }
Esempio n. 14
0
        protected override void BuildOutputSubclause(SqlStatement statement, SqlInsertClause insertClause)
        {
            if (insertClause.WithIdentity)
            {
                var identityField = insertClause.Into !.GetIdentityField();

                if (identityField != null && (identityField.Type !.Value.DataType == DataType.Guid || SqlServerConfiguration.GenerateScopeIdentity == false))
                {
                    StringBuilder
                    .Append("OUTPUT [INSERTED].");
                    Convert(StringBuilder, identityField.PhysicalName, ConvertType.NameToQueryField);
                    StringBuilder.AppendLine();
                    AppendIndent()
                    .Append("INTO ");
                    AppendOutputTableVariable(insertClause.Into)
                    .AppendLine();
                }
            }
            else
            {
                var output = statement.GetOutputClause();
                if (output != null && output.HasOutputItems)
                {
                    AppendIndent()
                    .AppendLine("OUTPUT");

                    if (output.InsertedTable != null)
                    {
                        output.InsertedTable.PhysicalName = "INSERTED";
                    }

                    if (output.DeletedTable != null)
                    {
                        output.DeletedTable.PhysicalName = "DELETED";
                    }

                    ++Indent;

                    bool first = true;
                    foreach (var oi in output.OutputItems)
                    {
                        if (!first)
                        {
                            StringBuilder.Append(',').AppendLine();
                        }
                        first = false;

                        AppendIndent();

                        BuildExpression(oi.Expression !);
                    }

                    if (output.OutputItems.Count > 0)
                    {
                        StringBuilder
                        .AppendLine();
                    }

                    --Indent;

                    if (output.OutputQuery != null)
                    {
                        BuildColumns(output.OutputQuery);
                    }

                    if (output.OutputTable != null)
                    {
                        AppendIndent()
                        .Append("INTO ")
                        .Append(GetTablePhysicalName(output.OutputTable))
                        .AppendLine();

                        AppendIndent()
                        .AppendLine("(");

                        ++Indent;

                        var firstColumn = true;
                        foreach (var oi in output.OutputItems)
                        {
                            if (!firstColumn)
                            {
                                StringBuilder.Append(',').AppendLine();
                            }
                            firstColumn = false;

                            AppendIndent();

                            BuildExpression(oi.Column, false, true);
                        }

                        StringBuilder
                        .AppendLine();

                        --Indent;

                        AppendIndent()
                        .AppendLine(")");
                    }
                }
            }
        }
 public virtual void Visiting(SqlInsertClause insertClause)
 {
     sqlBuilder.Append("Insert Into " + EncapsulateTable(insertClause.SqlTable.Name));
 }
 public virtual void Visited(SqlInsertClause insertClause)
 {
 }