📄 xqyacc.pas
字号:
89 : begin
fExtractField:= 5;
end;
90 : begin
if Length(fForLength) > 0 then
yyval.yystring := Format('COPY(%s,%s,%s)',[yyv[yysp-4].yystring,yyv[yysp-2].yystring,fForLength])
else
yyval.yystring := Format('COPY(%s,%s,LENGTH(%s))',[yyv[yysp-4].yystring,yyv[yysp-2].yystring,yyv[yysp-4].yystring]);
fForLength := '';
end;
91 : begin
end;
92 : begin
fForLength:= yyv[yysp-0].yystring;
end;
93 : begin
fCastType := RW_CHAR;
fCastLen := StrToInt( yyv[yysp-1].yystring );
end;
94 : begin
fCastType := RW_INTEGER;
end;
95 : begin
fCastType := RW_BOOLEAN;
end;
96 : begin
fCastType := RW_DATE;
end;
97 : begin
fCastType := RW_TIME;
end;
98 : begin
fCastType := RW_DATETIME;
end;
99 : begin
fCastType := RW_FLOAT;
end;
100 : begin
fCastType := RW_MONEY;
end;
101 : begin
yyval.yystring := yyv[yysp-3].yystring + ' ' + fwhenlist + ' ' + yyv[yysp-1].yystring + ' ' + yyv[yysp-0].yystring;
end;
102 : begin
fwhenlist := '';
end;
103 : begin
yyval := yyv[yysp-0];
end;
104 : begin
yyval := yyv[yysp-1];
end;
105 : begin
fwhenlist := fwhenlist + ' ' + yyv[yysp-3].yystring + ' ' + yyv[yysp-2].yystring + ' ' + yyv[yysp-1].yystring + ' ' + yyv[yysp-0].yystring;
yyval.yystring := yyv[yysp-3].yystring + ' ' + yyv[yysp-2].yystring + ' ' + yyv[yysp-1].yystring + ' ' + yyv[yysp-0].yystring;
end;
106 : begin
end;
107 : begin
yyval.yystring := yyv[yysp-1].yystring + ' ' +yyv[yysp-0].yystring;
end;
108 : begin
yyval := yyv[yysp-0];
end;
109 : begin
yyval := yyv[yysp-0];
end;
110 : begin
yyval := yyv[yysp-0];
end;
111 : begin
yyval := yyv[yysp-0];
end;
112 : begin
yyval := yyv[yysp-0];
end;
113 : begin
yyval := yyv[yysp-0];
end;
114 : begin
yyval.yystring := Format('\f"%s"',[yyv[yysp-0].yystring]);
CurrentAnalizer.AddFieldIfNot( yyv[yysp-0].yystring );
end;
115 : begin
yyval := yyv[yysp-0];
end;
116 : begin
yyval.yystring := Format('\f"%s.%s"',[yyv[yysp-2].yystring, yyv[yysp-0].yystring]);
CurrentAnalizer.AddFieldIfNot( yyv[yysp-2].yystring + '.' + yyv[yysp-0].yystring);
end;
117 : begin
yyval.yystring := CurrentAnalizer.ReplaceParams( yyv[yysp-1].yystring + yyv[yysp-0].yystring );
end;
118 : begin
yyval := yyv[yysp-1];
end;
119 : begin
yyval := yyv[yysp-2];
end;
120 : begin
yyval := yyv[yysp-0];
end;
121 : begin
yyval := yyv[yysp-2];
end;
122 : begin
AddTable(yyv[yysp-0].yystring, '', False);
end;
123 : begin
AddTable( yyv[yysp-1].yystring, yyv[yysp-0].yystring, False);
end;
124 : begin
AddTable( yyv[yysp-0].yystring, '', true );
end;
125 : begin
AddTable(yyv[yysp-1].yystring, yyv[yysp-0].yystring, True);
end;
126 : begin
With CurrentAnalizer.TableList.Add Do
Begin
NumSubquery:= CurrentAnalizer.SubqueryList.Count-1;
TableName:= yyv[yysp-0].yystring;
Alias:= yyv[yysp-0].yystring;
End;
end;
127 : begin
yyval := yyv[yysp-0];
end;
128 : begin
yyval := yyv[yysp-1];
end;
129 : begin
fTempJoinOnItem.JoinExpression:= yyv[yysp-0].yystring;
AddJoin;
end;
130 : begin
fTempJoinOnItem.JoinAction := jkLeftInnerJoin;
end;
131 : begin
fTempJoinOnItem.JoinAction := jkLeftInnerJoin;
end;
132 : begin
fTempJoinOnItem.JoinAction := jkLeftInnerJoin;
end;
133 : begin
fTempJoinOnItem.JoinAction := jkLeftInnerJoin;
end;
134 : begin
fTempJoinOnItem.JoinAction := jkLeftOuterJoin;
end;
135 : begin
fTempJoinOnItem.JoinAction := jkLeftOuterJoin;
end;
136 : begin
fTempJoinOnItem.JoinAction := jkRightInnerJoin;
end;
137 : begin
fTempJoinOnItem.JoinAction := jkRightInnerJoin;
end;
138 : begin
fTempJoinOnItem.JoinAction := jkRightOuterJoin;
end;
139 : begin
fTempJoinOnItem.JoinAction := jkFullOuterJoin;
end;
140 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
SetJoinTestTbls( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
end;
141 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
SetJoinTestTbls( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
end;
142 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
SetJoinTestTbls( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
end;
143 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
SetJoinTestTbls( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
end;
144 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
SetJoinTestTbls( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
end;
145 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
SetJoinTestTbls( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
end;
146 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring ;
end;
147 : begin
yyval.yystring:= yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring ;
end;
148 : begin
yyval.yystring:= yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring ;
end;
149 : begin
yyval.yystring := yyv[yysp-2].yystring + ' + ' + yyv[yysp-0].yystring;
end;
150 : begin
yyval.yystring := yyv[yysp-2].yystring + ' - ' + yyv[yysp-0].yystring;
end;
151 : begin
yyval.yystring := yyv[yysp-2].yystring + ' * ' + yyv[yysp-0].yystring;
end;
152 : begin
yyval.yystring := yyv[yysp-2].yystring + ' / ' + yyv[yysp-0].yystring;
end;
153 : begin
yyval.yystring := yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
154 : begin
yyval.yystring := yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
155 : begin
if fEscapeChar = '' then fEscapeChar := #39#39;
yyval.yystring := Format('SQLNOTLIKE(%s, %s, %s)',[yyv[yysp-4].yystring, yyv[yysp-1].yystring, fEscapeChar]);
fEscapeChar:= '';
end;
156 : begin
if fEscapeChar = '' then fEscapeChar := #39#39;
yyval.yystring := Format('SQLLIKE(%s, %s, %s)',[yyv[yysp-3].yystring, yyv[yysp-1].yystring, fEscapeChar]);
fEscapeChar:= '';
end;
157 : begin
yyval.yystring := CreateInListExpression( yyv[yysp-4].yystring );
end;
158 : begin
yyval.yystring := Format('(%s >= %s) AND (%s <= %s)',
[yyv[yysp-4].yystring, yyv[yysp-2].yystring, yyv[yysp-4].yystring, yyv[yysp-0].yystring]);
end;
159 : begin
yyval.yystring := yyv[yysp-2].yystring + '()';
end;
160 : begin
yyval.yystring := yyv[yysp-3].yystring + yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
161 : begin
yyval.yystring := yyv[yysp-3].yystring + yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
162 : begin
yyval.yystring := yyv[yysp-3].yystring + yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
163 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
164 : begin
yyval.yystring:= '[dummy].' + yyv[yysp-0].yystring;
end;
165 : begin
yyval.yystring:= yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
166 : begin
yyval.yystring:= '[dummy].' + yyv[yysp-0].yystring;
end;
167 : begin
yyval := yyv[yysp-0];
end;
168 : begin
yyval := yyv[yysp-0];
end;
169 : begin
yyval := yyv[yysp-0];
end;
170 : begin
yyval := yyv[yysp-0];
end;
171 : begin
yyval := yyv[yysp-0];
end;
172 : begin
yyval := yyv[yysp-0];
end;
173 : begin
yyval.yystring := yyv[yysp-2].yystring + '()';
end;
174 : begin
yyval.yystring := yyv[yysp-3].yystring + yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
175 : begin
yyval.yystring := yyv[yysp-3].yystring + yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
176 : begin
yyval.yystring := yyv[yysp-3].yystring + yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
177 : begin
yyval.yystring := Format('(%s >= %s) AND (%s <= %s)',
[yyv[yysp-4].yystring, yyv[yysp-2].yystring, yyv[yysp-4].yystring, yyv[yysp-0].yystring]);
end;
178 : begin
yyval.yystring := Format('(%s >= %s) AND (%s <= %s)',
[yyv[yysp-4].yystring, yyv[yysp-2].yystring, yyv[yysp-4].yystring, yyv[yysp-0].yystring]);
AddWhereOptimize( yyv[yysp-4].yystring, yyv[yysp-2].yystring, yyv[yysp-0].yystring, ropBETWEEN );
end;
179 : begin
yyval.yystring := CreateInListExpression( yyv[yysp-4].yystring );
end;
180 : begin
if Pos('NOT',UpperCase(yyv[yysp-1].yystring)) = 0 then
yyval.yystring := yyv[yysp-2].yystring + Format(' = (subquery %d)', [CurrentAnalizer.SubqueryList.Count-1])
else
yyval.yystring := yyv[yysp-2].yystring + Format(' <> (subquery %d)', [CurrentAnalizer.SubqueryList.Count-1]);
end;
181 : begin
if fEscapeChar = '' then fEscapeChar := #39#39;
yyval.yystring := Format('SQLLIKE(%s, %s, %s)',[yyv[yysp-3].yystring, yyv[yysp-1].yystring, fEscapeChar]);
fEscapeChar:= '';
end;
182 : begin
if fEscapeChar = '' then fEscapeChar := #39#39;
yyval.yystring := Format('SQLNOTLIKE(%s, %s, %s)',[yyv[yysp-4].yystring, yyv[yysp-1].yystring, fEscapeChar]);
fEscapeChar:= '';
end;
183 : begin
yyval.yystring := yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
184 : begin
yyval.yystring := yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
185 : begin
yyval.yystring := yyv[yysp-2].yystring + ' + ' + yyv[yysp-0].yystring;
end;
186 : begin
yyval.yystring := yyv[yysp-2].yystring + ' - ' + yyv[yysp-0].yystring;
end;
187 : begin
yyval.yystring := yyv[yysp-2].yystring + ' * ' + yyv[yysp-0].yystring;
end;
188 : begin
yyval.yystring := yyv[yysp-2].yystring + ' / ' + yyv[yysp-0].yystring;
end;
189 : begin
yyval.yystring := yyv[yysp-2].yystring + ' ^ ' + yyv[yysp-0].yystring;
end;
190 : begin
yyval.yystring := yyv[yysp-2].yystring + ' MOD ' + yyv[yysp-0].yystring;
end;
191 : begin
yyval.yystring := yyv[yysp-2].yystring + ' DIV ' + yyv[yysp-0].yystring;
end;
192 : begin
yyval.yystring := yyv[yysp-2].yystring + ' SHL ' + yyv[yysp-0].yystring;
end;
193 : begin
yyval.yystring := yyv[yysp-2].yystring + ' SHR ' + yyv[yysp-0].yystring;
end;
194 : begin
yyval.yystring := yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring;
AddJoinCandidate( yyv[yysp-2].yystring, yyv[yysp-0].yystring );
AddWhereOptimize( yyv[yysp-2].yystring, yyv[yysp-0].yystring, yyv[yysp-0].yystring, ropBETWEEN);
end;
195 : begin
yyval.yystring := yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring;
AddWhereOptimize( yyv[yysp-2].yystring, yyv[yysp-0].yystring, yyv[yysp-0].yystring, ropGE);
end;
196 : begin
yyval.yystring := yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring;
AddWhereOptimize( yyv[yysp-2].yystring, yyv[yysp-0].yystring, yyv[yysp-0].yystring, ropLE);
end;
197 : begin
yyval.yystring := yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring;
AddWhereOptimize( yyv[yysp-2].yystring, yyv[yysp-0].yystring, yyv[yysp-0].yystring, ropGT);
end;
198 : begin
yyval.yystring := yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring;
AddWhereOptimize( yyv[yysp-2].yystring, yyv[yysp-0].yystring, yyv[yysp-0].yystring, ropLT);
end;
199 : begin
yyval.yystring := yyv[yysp-2].yystring + #32 + yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring;
AddWhereOptimize( yyv[yysp-2].yystring, yyv[yysp-0].yystring, yyv[yysp-0].yystring, ropNEQ);
end;
200 : begin
yyval.yystring := yyv[yysp-2].yystring + ' AND ' + yyv[yysp-0].yystring;
end;
201 : begin
yyval.yystring := yyv[yysp-2].yystring + ' OR ' + yyv[yysp-0].yystring;
end;
202 : begin
yyval.yystring := ' NOT ' + yyv[yysp-0].yystring;
end;
203 : begin
yyval.yystring := yyv[yysp-2].yystring + yyv[yysp-1].yystring + yyv[yysp-0].yystring;
end;
204 : begin
yyval.yystring := Format('(subquery %d)', [CurrentAnalizer.SubqueryList.Count-1]);
end;
205 : begin
yyval.yystring := Format('ISNULL(%s,TRUE)', [yyv[yysp-2].yystring]);
end;
206 : begin
yyval.yystring := Format('ISNULL(%s,FALSE)', [yyv[yysp-3].yystring]);
end;
207 : begin
fIsNotInList := False;
end;
208 : begin
yyval.yystring := yyv[yysp-1].yystring + #32 + yyv[yysp-0].yystring ; fIsNotInList := True;
end;
209 : begin
fInPredicateList.Add( yyv[yysp-0].yystring );
end;
210 : begin
fInPredicateList.Add( yyv[yysp-0].yystring );
end;
211 : begin
yyval := yyv[yysp-0];
end;
212 : begin
yyval := yyv[yysp-0];
end;
213 : begin
yyval := yyv[yysp-0];
end;
214 : begin
yyval := yyv[yysp-0];
end;
215 : begin
if CurrentAnalizer.xQuery.WithDummies then
yyval.yystring := 'DummyBoolean(True)'
else
yyval.yystring := 'True' ;
end;
216 : begin
if CurrentAnalizer.xQuery.WithDummies then
yyval.yystring := 'DummyBoolean(False)'
else
yyval.yystring := 'False';
end;
217 : begin
yyval := yyv[yysp-0];
end;
218 : begin
yyval := yyv[yysp-0];
end;
219 : begin
yyval.yystring:= yyv[yysp-2].yystring + ', ' + yyv[yysp-0].yystring;
end;
220 : begin
end;
221 : begin
CurrentAnalizer.WhereStr := yyv[yysp-0].yystring;
end;
222 : begin
end;
223 : begin
CurrentAnalizer.UserDefinedRange.UsingIndex:= GetString(yyv[yysp-0].yystring);
end;
224 : begin
CurrentAnalizer.UserDefinedRange.ForFields.Add(GetString(yyv[yysp-0].yystring));
end;
225 : begin
CurrentAnalizer.UserDefinedRange.ForFields.Add(GetString(yyv[yysp-0].yystring));
end;
226 : begin
CurrentAnalizer.UserDefinedRange.StartValues.Add( yyv[yysp-0].yystring );
end;
227 : begin
CurrentAnalizer.UserDefinedRange.StartValues.Add( yyv[yysp-0].yystring );
end;
228 : begin
CurrentAnalizer.UserDefinedRange.EndValues.Add( yyv[yysp-0].yystring );
end;
229 : begin
CurrentAnalizer.UserDefinedRange.EndValues.Add( yyv[yysp-0].yystring );
end;
230 : begin
yyval := yyv[yysp-0];
end;
231 : begin
yyval := yyv[yysp-0];
end;
232 : begin
yyval := yyv[yysp-0];
end;
233 : begin
yyval := yyv[yysp-0];
end;
234 : begin
yyval := yyv[yysp-0];
end;
235 : begin
CurrentAnalizer.SubQueryKindList.Add( Pointer(skAny) );
end;
236 : begin
CurrentAnalizer.SubQueryKindList.Add( Pointer(skAny) );
end;
237 : begin
CurrentAnalizer.SubQueryKindList.Add( Pointer(skAll) );
end;
238 : begin
yyval := yyv[yysp-2];
end;
239 : begin
TSqlAnalizer( CurrentAnalizer.SubQueryList[0] ).Statement:= ssUnion;
end;
240 : begin
yyval := yyv[yysp-5];
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -