protected override void VisitExecuteStatement(ExecuteStatement statement) { bool needDeallocate = false; if (statement.Name == null) { if (statement.Target.Target != null) { PrepareStatement prepStatement = Sql.Prepare().Name(Sql.Name(this.TempExecute)).From(statement.Target.Target); if (statement.Parameters.Count != 0) { foreach (Parameter p in statement.Parameters) { prepStatement.Parameters.Add(p); } } VisitStatement(prepStatement); State.WriteStatementTerminator(); statement.Name = Sql.Name(this.TempExecute); needDeallocate = true; } } State.Write(Symbols.EXECUTE); VisitToken(statement.Name); if (statement.Parameters.Count != 0) { State.Write(Symbols.OpenParenthesis); VisitTokenSet(statement.Parameters, visitToken: parameter => { if (parameter.Value != null) { VisitValue(parameter.Value); } else { State.Write(parameter.Name); } State.Parameters.Add(parameter); }); State.Write(Symbols.CloseParenthesis); } if (needDeallocate) { State.WriteStatementTerminator(); VisitStatement(Sql.Deallocate(statement.Name)); } }
public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql) { PrepareStatement?.Invoke(this, EventArgs.Empty); return(base.OnPrepareStatement(sql)); }