Ejemplo n.º 1
0
        /// <summary>
        /// Builds the SQL text of the specified merge query.
        /// </summary>
        /// <param name="query">The query to consider.</param>
        /// <param name="parameterSet">The parameter set to consider.</param>
        /// <param name="scriptVariableSet">The script variable set to consider.</param>
        /// <param name="log">The log to consider.</param>
        /// <returns>Returns the built query text.</returns>
        protected override string GetSqlText_Query(
            IDbCompositeQuery query,
            IDataElementSet parameterSet         = null,
            IScriptVariableSet scriptVariableSet = null,
            IBdoLog log = null)
        {
            var queryString = "";

            // we build the query
            switch (query.Kind)
            {
            case DbQueryKind.Insert:
                break;

            // Upsert
            case DbQueryKind.Upsert:
            {
                //queryString = "merge ";
                //queryString += GetSqlText_Table(
                //    query.DataModule, query.Schema, query.DataTable, query.DataTableAlias,
                //    DbFieldViewMode.CompleteNameAsAlias, query.DataModule, query.Schema,
                //    scriptVariableSet: scriptVariableSet, log: log);

                //if (query.SelectJoinStatement != null)
                //{
                //    query.SelectJoinStatement.Kind = DbQueryJoinKind.Left;
                //    var subQueryString = GetSqlText_Join(query.SelectJoinStatement, query, parameterSet, scriptVariableSet, log);
                //    subQueryString = subQueryString.Substring("left join ".Length);
                //    queryString += subQueryString;
                //}

                //queryString += " when matched ";
                //queryString += BuildQuery(query.MatchedQuery, DbQueryParameterMode.Scripted, parameterSet, scriptVariableSet, log);
                //UpdateParameterSet(query.ParameterSet, query.MatchedQuery);

                //queryString += " when not matched ";
                //queryString += BuildQuery(query.NotMatchedQuery, DbQueryParameterMode.Scripted, parameterSet, scriptVariableSet, log);
                //queryString += ";";
                //UpdateParameterSet(query.ParameterSet, query.NotMatchedQuery);
            }
            break;
            }

            return(queryString);
        }
Ejemplo n.º 2
0
        // Builds merge query ----------------------

        /// <summary>
        /// Builds the SQL text of the specified merge query.
        /// </summary>
        /// <param name="query">The query to consider.</param>
        /// <param name="log">The log to consider.</param>
        /// <param name="parameterSet">The parameter set to consider.</param>
        /// <param name="scriptVariableSet">The script variable set to consider.</param>
        /// <returns>Returns the built query text.</returns>
        protected abstract string GetSqlText_Query(
            IDbCompositeQuery query,
            IDataElementSet parameterSet         = null,
            IScriptVariableSet scriptVariableSet = null,
            IBdoLog log = null);