예제 #1
0
 public virtual void Visit(DmlDeleteStatement node)
 {
     VisitInternal(node.Limit);
     VisitInternal(node.OrderBy);
     VisitInternal(node.TableNames);
     VisitInternal(node.TableRefs);
     VisitInternal(node.WhereCondition);
 }
예제 #2
0
        public void Visit(DmlDeleteStatement node)
        {
            TableReference tr  = node.TableRefs;
            var            tbs = node.TableNames;

            if (tr == null)
            {
                var table = tbs[0];
                TableAsTableFactor(table);
            }
            else
            {
                VisitChild(1, _verdictColumn, false, tr);
                foreach (var tb in tbs)
                {
                    if (tb is Wildcard)
                    {
                        var trim = tb.TrimParent(2, _trimSchema);
                        _schemaTrimmed  = _schemaTrimmed || trim == Identifier.ParentTrimed;
                        _customedSchema = _customedSchema || trim == Identifier.ParentIgnored;
                    }
                    else
                    {
                        var trim = tb.TrimParent(1, _trimSchema);
                        _schemaTrimmed  = _schemaTrimmed || trim == Identifier.ParentTrimed;
                        _customedSchema = _customedSchema || trim == Identifier.ParentIgnored;
                    }
                }
            }

            var where = node.WhereCondition;
            VisitChild(2, _verdictColumn, false, where);

            if (tr == null)
            {
                var order = node.OrderBy;
                VisitChild(2, false, false, order);
            }
        }