void ISqlElement.Render(RenderContext context) { context.Write(Name); context.Write('('); context.RenderDelimited(Parameters); context.Write(')'); }
void ISqlElement.Render(RenderContext context) { if (context.Mode == RenderMode.Nested) { switch (Target) { case Column column: context.WriteIdentifier(column.Name); break; default: context.Render(Target); break; } context.Write(" = "); context.Render(Value); } else { using (context.EnterChildMode(RenderMode.Nested)) { context.Write("SET "); context.Render(Target); context.Write(" = "); context.Render(Value); context.Write(';'); } } }
/// <summary> /// Renders the where collection, adding AND and OR statements, to the specified . /// </summary> /// <param name="context">The rendering context.</param> void ISqlElement.Render(RenderContext context) { if (IsNested) { context.Write('('); } context.Render(Left ?? throw new InvalidCommandException("Left condition missing")); switch (BooleanOperator) { case BooleanOperator.And: context.Write(" AND "); break; case BooleanOperator.Or: context.Write(" OR "); break; default: throw new InvalidOperationException("Unknown operator value"); } context.Render(Right ?? throw new InvalidCommandException("Right condition missing")); if (IsNested) { context.Write(')'); } }
void ISqlElement.Render(RenderContext context) { context.WriteIdentifier(Name); context.Write(' '); context.Render(Type); foreach (var constraint in Constraints) { context.Write(' '); context.Render(constraint); } }
void ISqlElement.Render(RenderContext context) { if (Element is Table) { Element.Render(context); context.Write($" {Name}"); } else { Element.Render(context); context.Write($" AS {Name}"); } }
void ISqlElement.Render(RenderContext context) { context.WriteLine("BEGIN"); context.RenderDelimited(this, context.LineDelimiter); context.WriteLine(); context.Write("END"); }
void ISqlElement.Render(RenderContext context) { if (Value != null) { context.Write(Value); } }
void ISqlElement.Render(RenderContext context) { context.Write("CAST("); context.Render(Expression); context.Write(" AS "); if (As.HasValue) { context.Write(context.Dialect.FormatType(As.Value, AsParams)); } else { context.Write(AsRaw); } context.Write(')'); }
void ISqlElement.Render(RenderContext context) { Element.Render(context); switch (Direction) { case Direction.Ascending: context.Write(" ASC"); break; case Direction.Descending: context.Write(" DESC"); break; default: break; } }
void ISqlElement.Render(RenderContext context) { using (context.EnterChildMode(RenderMode.Nested)) { if (Left is null || Right is null) { // A value is null, get the non-null value var value = Left ?? Right; if (value is null) { throw new InvalidCommandException("Both sides of a condition operation cannot be null."); } // Note that we are supporting binary operators Equal and NotEqual below to allow // automatic conversion of null to IS NULL or IS NOT NULL clauses. switch (OperationType) { case OperationType.Equal: case OperationType.IsNull: context.Render(value); context.Write(" IS NULL"); return; case OperationType.NotEqual: case OperationType.IsNotNull: context.Render(value); context.Write(" IS NOT NULL"); return; case OperationType.Exists: context.Write("EXISTS "); context.Render(value); return; case OperationType.NotExists: context.Write("NOT EXISTS "); context.Render(value); return; default: throw new InvalidCommandException($"The binary operator '{OperationType}' requires two arguments."); } }
void ISqlElement.Render(RenderContext context) { context.Write("DROP "); switch (Type) { case DropType.Table: context.Write("TABLE "); break; case DropType.Constraint: throw new NotImplementedException(); default: throw new InvalidCommandException($"Unrecognized drop type '{Type}'"); } context.Render(Target); context.Write(';'); }
void ISqlElement.Render(RenderContext context) { var output = OutputType.None; if (_returning?.Any() == true) { output = context.Dialect.OutputType; if (output == OutputType.None) { throw new InvalidCommandException("This dialect does not support return clauses in delete statements."); } } using (context.EnterChildMode(RenderMode.Nested)) { context.Write("DELETE FROM "); context.Render(_from.Value); // OUTPUT statements are rendered before where clauses if (output == OutputType.Output) { context.WriteLine(); context.Write("OUTPUT "); context.RenderDelimited(_returning); } if (Where != null) { context.WriteLine(); context.Write("WHERE "); context.Render(Where.Value); } // RETURNING statements are rendered after where clauses if (output == OutputType.Returning) { context.WriteLine(); context.Write("RETURNING "); context.RenderDelimited(_returning); } context.Write(';'); } }
void ISqlElement.Render(RenderContext context) { if (Unique) { context.Write("CREATE UNIQUE INDEX "); } else { context.Write("CREATE INDEX "); } context.WriteIdentifier(Name); context.WriteLine(); context.Write("ON "); context.Render(On); context.Write('('); context.RenderDelimited(Columns); context.Write(");"); }
void ISqlElement.Render(RenderContext context) { if (Name == null) { throw new InvalidCommandException("Create table statement must specify a name."); } context.Write("CREATE TABLE "); context.Render(Name); context.WriteLine(); context.WriteLine("("); context.RenderDelimited(Columns, "," + context.LineDelimiter); foreach (var constraint in Constraints) { context.WriteLine(","); context.Render(constraint); } context.WriteLine(); context.Write(");"); }
void ISqlElement.Render(RenderContext context) { context.Write("CAST("); context.Render(Expression); context.Write(" AS "); if (As.HasValue) { context.Write(context.Dialect.FormatType(As.Value, AsParams)); } else if (AsRaw != null) { context.Write(AsRaw); } else { throw new InvalidCommandException("Either 'As' or 'AsRaw' type name must be specified in cast expression."); } context.Write(')'); }
void ISqlElement.Render(RenderContext context) { if (String.IsNullOrEmpty(ExplicitTypeName)) { context.Write(context.Dialect.FormatType(Type, Parameters)); } else { context.Write(ExplicitTypeName); } if (AllowNull) { context.Write(" NULL"); } else { context.Write(" NOT NULL"); } }
void ISqlElement.Render(RenderContext context) { context.Write("IF ("); context.Render(Condition?.Value ?? throw new InvalidCommandException("IF condition must not be null.")); context.WriteLine(")"); context.Render(Then ?? throw new InvalidCommandException("Then statement of IF condition must not be null.")); if (Else != null) { context.WriteLine(); context.WriteLine("ELSE"); context.Render(Else); } }
/// <inheritdoc/> public void Render(RenderContext context, BeginTransaction beginTransaction) { switch (beginTransaction.Isolation) { case null: context.Write("BEGIN TRANSACTION"); break; case Isolation.ReadUncommitted: context.Write("BEGIN TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"); break; case Isolation.ReadCommitted: context.Write("BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED"); break; case Isolation.RepeatableRead: context.Write("BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ"); break; case Isolation.Serializable: context.Write("BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE"); break; case Isolation.Snapshot: context.Write("BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT"); break; default: throw new InvalidCommandException($"Unsupported isolation level '{beginTransaction.Isolation}'"); } if (beginTransaction.ReadOnly.HasValue) { if (beginTransaction.Isolation != null) { context.Write(','); } context.Write(beginTransaction.ReadOnly.Value ? " READ ONLY" : " READ WRITE"); } context.Write(';'); }
void ISqlElement.Render(RenderContext context) { context.WriteIdentifierPrefix(Schema); context.WriteIdentifierPrefix(Table); if (Name == "*") { // Don't format wildcard context.Write('*'); } else { context.WriteIdentifier(Name); } }
void ISqlElement.Render(RenderContext context) { using (context.EnterChildMode(RenderMode.Nested)) { context.Render(Left); switch (Symbol) { case ArithmeticOperator.Add: context.Write(" + "); break; case ArithmeticOperator.Subtract: context.Write(" - "); break; case ArithmeticOperator.Multiply: context.Write(" * "); break; case ArithmeticOperator.Divide: context.Write(" / "); break; case ArithmeticOperator.Modulo: context.Write(" % "); break; case ArithmeticOperator.BitShiftLeft: context.Write(" << "); break; case ArithmeticOperator.BitShiftRight: context.Write(" >> "); break; default: break; } context.Render(Right); } }
void ISqlElement.Render(RenderContext context) { switch (JoinType) { case JoinType.Join: context.Write("\nJOIN "); break; case JoinType.Inner: context.Write("\nINNER JOIN "); break; case JoinType.LeftOuter: context.Write("\nLEFT JOIN "); break; case JoinType.RightOuter: context.Write("\nRIGHT JOIN "); break; case JoinType.FullOuter: context.Write("\nOUT JOIN "); break; case JoinType.Cross: context.Write("\nCROSS JOIN "); break; default: break; } context.Render(Table); if (On != null) { context.Write(" ON "); context.Render(On.Value); } }
void ISqlElement.Render(RenderContext context) { context.Write("COMMIT TRANSACTION;"); }
void ISqlElement.Render(RenderContext context) { context.Write("ROLLBACK TRANSACTION;"); }
void ISqlElement.Render(RenderContext context) { context.WriteIdentifierPrefix(Schema); context.Write(Name); }
void ISqlElement.Render(RenderContext context) { context.Write('('); context.RenderDelimited(Items); context.Write(')'); }
void ISqlElement.Render(RenderContext context) { context.Write(context.GetParameter(this)); }
void ISqlElement.Render(RenderContext context) { context.Write("CREATE DATABASE "); context.WriteIdentifier(DatabaseName); context.Write(';'); }