Exemplo n.º 1
0
        public override object InternalExecute(Program program, object[] arguments)
        {
            var tableVar           = APIUtilities.ResolveTableVarName(program, (string)arguments[0]);
            var identifyingKey     = APIUtilities.FindIdentifyingKey(program, tableVar);
            var keyValues          = APIUtilities.GetKeyValues(program, identifyingKey, (string)arguments[1]);
            var keyEqualExpression = Compiler.BuildKeyEqualExpression(program.Plan, String.Empty, "AKey", new Schema.RowType(identifyingKey.Columns).Columns, keyValues.DataType.Columns);

            var updateStatement = new UpdateStatement();

            updateStatement.Target = new IdentifierExpression(tableVar.Name);

            var row = (IRow)arguments[2];

            for (int i = 0; i < row.DataType.Columns.Count; i++)
            {
                updateStatement.Columns.Add(new UpdateColumnExpression(new IdentifierExpression(row.DataType.Columns[i].Name), new IdentifierExpression(Schema.Object.Qualify(row.DataType.Columns[i].Name, "ARow"))));
            }

            updateStatement.Condition = keyEqualExpression;

            var statement  = new D4TextEmitter().Emit(updateStatement);
            var dataParams = new DataParams();

            dataParams.Add(new DataParam("AKey", keyValues.DataType, Modifier.In, keyValues));
            dataParams.Add(new DataParam("ARow", row.DataType, Modifier.In, row));

            APIUtilities.Execute(program, statement, dataParams);

            return(null);
        }
Exemplo n.º 2
0
        public override object InternalExecute(Program program, object[] arguments)
        {
            var tableVar = APIUtilities.ResolveTableVarName(program, (string)arguments[0]);

            var insertStatement = new InsertStatement(new IdentifierExpression("ARow"), new IdentifierExpression(tableVar.Name));
            var statement       = new D4TextEmitter().Emit(insertStatement);
            var dataParams      = new DataParams();
            var row             = (IRow)arguments[1];

            dataParams.Add(new DataParam("ARow", row.DataType, Modifier.In, row));

            APIUtilities.Execute(program, statement, dataParams);

            return(null);
        }
Exemplo n.º 3
0
        public override object InternalExecute(Program program, object[] arguments)
        {
            var tableVar           = APIUtilities.ResolveTableVarName(program, (string)arguments[0]);
            var identifyingKey     = APIUtilities.FindIdentifyingKey(program, tableVar);
            var keyValues          = APIUtilities.GetKeyValues(program, identifyingKey, (string)arguments[1]);
            var keyEqualExpression = Compiler.BuildKeyEqualExpression(program.Plan, String.Empty, "AKey", new Schema.RowType(identifyingKey.Columns).Columns, keyValues.DataType.Columns);

            var deleteStatement = new DeleteStatement(new RestrictExpression(new IdentifierExpression(tableVar.Name), keyEqualExpression));
            var statement       = new D4TextEmitter().Emit(deleteStatement);
            var dataParams      = new DataParams();

            dataParams.Add(new DataParam("AKey", keyValues.DataType, Modifier.In, keyValues));

            APIUtilities.Execute(program, statement, dataParams);

            return(null);
        }