public override bool VisitExprIdentityInsert(ExprIdentityInsert exprIdentityInsert, IExpr?parent) { if (exprIdentityInsert.IdentityColumns.Count < 1) { return(exprIdentityInsert.Insert.Accept(this, exprIdentityInsert)); } this.Builder.Append("SET IDENTITY_INSERT "); exprIdentityInsert.Insert.Target.Accept(this, exprIdentityInsert); this.Builder.Append(" ON;"); var result = exprIdentityInsert.Insert.Accept(this, exprIdentityInsert); this.Builder.Append(";SET IDENTITY_INSERT "); exprIdentityInsert.Insert.Target.Accept(this, exprIdentityInsert); this.Builder.Append(" OFF;"); return(result); }
public override bool VisitExprOffsetFetch(ExprOffsetFetch exprOffsetFetch, IExpr?parent) { return(this.VisitExprOffsetFetchCommon(exprOffsetFetch, parent)); }
protected override void AppendSelectTop(ExprValue top, IExpr?parent) { //N/A }
public override bool VisitExprTypeXml(ExprTypeXml exprTypeXml, IExpr?arg) { this.Builder.Append("xml"); return(true); }
public override bool VisitExprTableFullName(ExprTableFullName exprTableFullName, IExpr?parent) => this.VisitExprTableFullNameCommon(exprTableFullName, parent);
public override bool VisitExprTypeDouble(ExprTypeDouble exprTypeDouble, IExpr?parent) { this.Builder.Append("float"); return(true); }
public override bool VisitExprTypeGuid(ExprTypeGuid exprTypeGuid, IExpr?parent) { this.Builder.Append("uniqueidentifier"); return(true); }
private void GenericUpdate(ExprTable targetIn, IReadOnlyList <ExprColumnSetClause> sets, IExprTableSource?source, ExprBoolean?filter, IExpr?parent) { this.AssertNotEmptyList(sets, "'UPDATE' statement should have at least one set clause"); IExprColumnSource target = targetIn.FullName; if (targetIn.Alias != null) { target = targetIn.Alias; source ??= targetIn; } this.Builder.Append("UPDATE "); target.Accept(this, parent); this.Builder.Append(" SET "); this.AcceptListComaSeparated(sets, parent); if (source != null) { this.Builder.Append(" FROM "); source.Accept(this, parent); } if (filter != null) { this.Builder.Append(" WHERE "); filter.Accept(this, parent); } }
public override bool VisitExprDelete(ExprDelete exprDelete, IExpr?parent) { this.GenericDelete(exprDelete.Target, null, exprDelete.Source, exprDelete.Filter, exprDelete); return(true); }
public override bool VisitExprInsertQuery(ExprInsertQuery exprInsertQuery, IExpr?parent) { return(this.VisitExprInsertQueryCommon(exprInsertQuery, parent)); }
public override bool VisitExprUpdate(ExprUpdate exprUpdate, IExpr?parent) { this.GenericUpdate(exprUpdate.Target, exprUpdate.SetClause, exprUpdate.Source, exprUpdate.Filter, exprUpdate); return(true); }
public override bool VisitExprInsertOutput(ExprInsertOutput exprInsertOutput, IExpr?parent) { this.GenericInsert(exprInsertOutput.Insert, () => { exprInsertOutput.OutputColumns.AssertNotEmpty("INSERT OUTPUT cannot be empty"); this.Builder.Append("OUTPUT "); for (int i = 0; i < exprInsertOutput.OutputColumns.Count; i++) { if (i != 0) { this.Builder.Append(','); } this.Builder.Append("INSERTED."); exprInsertOutput.OutputColumns[i].Accept(this, exprInsertOutput); } }, null); return(true); }
public override bool VisitExprDerivedTableValues(ExprDerivedTableValues derivedTableValues, IExpr?parent) { return(this.VisitExprDerivedTableValuesCommon(derivedTableValues, parent)); }
public override bool VisitExprDbSchema(ExprDbSchema exprDbSchema, IExpr?parent) { return(this.VisitExprDbSchemaCommon(exprDbSchema, parent)); }
public override bool VisitExprTypeInt32(ExprTypeInt32 exprTypeInt32, IExpr?parent) { this.Builder.Append("int"); return(true); }
public override bool VisitExprDeleteOutput(ExprDeleteOutput exprDeleteOutput, IExpr?parent) { this.GenericDelete(exprDeleteOutput.Delete.Target, exprDeleteOutput.OutputColumns, exprDeleteOutput.Delete.Source, exprDeleteOutput.Delete.Filter, exprDeleteOutput); return(true); }
public override bool VisitExprTypeInt64(ExprTypeInt64 exprTypeInt64, IExpr?parent) { this.Builder.Append("bigint"); return(true); }
public override bool VisitExprCast(ExprCast exprCast, IExpr?parent) { return(this.VisitExprCastCommon(exprCast, parent)); }
public override bool VisitExprTypeDateTime(ExprTypeDateTime exprTypeDateTime, IExpr?parent) { if (exprTypeDateTime.IsDate) { this.Builder.Append("date"); } else { this.Builder.Append("datetime"); } return(true); }
private void GenericDelete(ExprTable targetIn, IReadOnlyList <ExprAliasedColumn>?output, IExprTableSource?source, ExprBoolean?filter, IExpr?parent) { IExprColumnSource target = targetIn.FullName; if (targetIn.Alias != null) { target = targetIn.Alias; source ??= targetIn; } this.Builder.Append("DELETE "); target.Accept(this, parent); if (output != null) { this.AssertNotEmptyList(output, "Output list in 'DELETE' statement cannot be empty"); this.Builder.Append(" OUTPUT "); for (int i = 0; i < output.Count; i++) { if (i != 0) { this.Builder.Append(','); } this.Builder.Append("DELETED."); var col = output[i]; if (col.Column.Source == null) { col.Accept(this, parent); } else { new ExprAliasedColumnName(col.Column.ColumnName, col.Alias).Accept(this, parent); } } } if (source != null) { this.Builder.Append(" FROM "); source.Accept(this, parent); } if (filter != null) { this.Builder.Append(" WHERE "); filter.Accept(this, parent); } }
public override bool VisitExprTypeFixSizeString(ExprTypeFixSizeString exprTypeFixSizeString, IExpr?arg) { if (exprTypeFixSizeString.IsUnicode) { this.AppendName("nchar"); } else { this.AppendName("char"); } this.Builder.Append('('); this.Builder.Append(exprTypeFixSizeString.Size.ToString()); this.Builder.Append(')'); return(true); }
public override bool VisitExprTypeBoolean(ExprTypeBoolean exprTypeBoolean, IExpr?parent) { this.Builder.Append("bit"); return(true); }
public override bool VisitExprGetUtcDate(ExprGetUtcDate exprGetUtcDate, IExpr?parent) { this.Builder.Append("GETUTCDATE()"); return(true); }
public override bool VisitExprTypeByte(ExprTypeByte exprTypeByte, IExpr?parent) { this.Builder.Append("tinyint"); return(true); }
protected override void AppendSelectTop(ExprValue top, IExpr?parent) { this.Builder.Append("TOP "); top.Accept(this, top); this.Builder.Append(' '); }
public override bool VisitExprTypeFixSizeByteArray(ExprTypeFixSizeByteArray exprTypeFixSizeByteArray, IExpr?arg) { this.Builder.Append("binary("); this.Builder.Append(exprTypeFixSizeByteArray.Size.ToString()); this.Builder.Append(')'); return(true); }
public override bool VisitExprStringConcat(ExprStringConcat exprStringConcat, IExpr?parent) { exprStringConcat.Left.Accept(this, exprStringConcat); this.Builder.Append("||"); exprStringConcat.Right.Accept(this, exprStringConcat); return(true); }
public override bool VisitExprTypeInt16(ExprTypeInt16 exprTypeInt16, IExpr?parent) { this.Builder.Append("smallint"); return(true); }
protected override void AppendSelectLimit(ExprValue top, IExpr?parent) { this.Builder.Append(" LIMIT "); top.Accept(this, parent); }
public override bool VisitExprInsert(ExprInsert exprInsert, IExpr?parent) { this.GenericInsert(exprInsert, null, null); return(true); }