⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xqyacc.pas

📁 TxQuery is an SQL engine implemented in a TDataSet descendant component, that can parse SQL syntax,
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  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 + -