Heim > Fragen und Antworten > Hauptteil
Ich habe eine Frage an euch Senioren. Es gibt ein Feld sfz in der Tabelle. Ich verwende einen Cursor, um dieses Feld einer Variablen vsfz zuzuweisen . Es hat auch einen Zeichentyp mit fester Länge von 18 Bit. Ich habe eine Abfrageanweisung geschrieben: select bj from kq201905 where sfz=vsfz;, die korrekt abgefragt werden kann. Da ich mehrere Tabellen abfragen möchte, müssen die Tabellennamen mithilfe von Variablenschleifen zugewiesen werden. Daher verwende ich Vorbereitungsanweisungen, um sie zusammenzufügen.
set @vsk=concat('select bj from ',vkn,' where sfz=' ,vsfz,';' );
prepare stmt from @vsk;
execute stmt;
deallocate Prepare stmt;
Nach der Ausführung wurde festgestellt, dass das Abfrageergebnis falsch war. Ich habe getestet, dass es nichts mit der Tabellennamenvariablen zu tun hat, und jetzt vermute ich, dass es ein Problem mit der where-Klausel ist. Wenn jemand den Grund kennt, sagen Sie es mir bitte, danke!