internal static SqlGenerator InsertScalar(SqlSession sqlSession, DbSelectStatement statement, bool outputIdentity, out SqlParameter scopeIdentityParam) { var result = new SqlGenerator(sqlSession.SqlVersion); var model = statement.Model; var sqlBuilder = result.SqlBuilder; if (model.IsIdentitySuspended()) { SetIdentityInsert(sqlBuilder, model, true); } BuildInsertIntoClause(sqlBuilder, model, statement.Select); if (statement.Select.Count > 0) { statement.Accept(result); } if (model.IsIdentitySuspended()) { SetIdentityInsert(sqlBuilder, model, false); } if (outputIdentity) { var sqlType = SqlType.BigInt(new _Int64()); scopeIdentityParam = sqlType.CreateSqlParameter("@scopeIdentity", ParameterDirection.Output, null, sqlSession.SqlVersion); sqlBuilder.AppendLine(); sqlBuilder.Append("SET @scopeIdentity = CAST(SCOPE_IDENTITY() AS BIGINT);"); } else { scopeIdentityParam = null; } return(result); }