Ich arbeitete an einem Audit-Trail-Modul, bei dem ich eine riesige Liste von Schattentabelle aus der ursprünglichen Tabelle erstellen musste. Ich dachte, eine gespeicherte Prozedur zu schreiben, die eine Schattentabelle aus einer anderen Tabelle generieren konnte. Diese Tabelle könnte eine beliebige Tabelle sein, sie könnte Tabelle_A sein, die aus 3 Feldern eines beliebigen Datentyps besteht, oder Tabelle_B, die aus 10 Feldern eines beliebigen Datentyps besteht und die auf dem Parameter basieren könnte, der in die Speicherprozedur übergeben wird.So erstellen Sie eine Schattentabelle in Informix
Ich weiß, dass ich eine Liste der Felder zur Verfügung, die insbesondere TABLE_A von syscolumns und systables wie dieses abrufen kann:
select * from syscolumns where tabid = (select tabid from systables where tabname='table_A')
Es wird eine Liste der Felder aus dieser Aussage zurückkehrt, läßt Field_A sagen, dass ich dann Benennt dieses Feld_A um, um 2 neue Felder zu erstellen, die pre_field_A und post_field_A sind, und dann diese 2 neuen Felder zu verwenden, um eine Schattentabelle von shadow_table_A zu erstellen. Wenden Sie dieses Konzept auf die restlichen Felder an. Machen Sie sich keine Sorgen wegen des Datentyps eines Felds, da diese Information bereits in syscolumns vorhanden ist und ich sie einfach in die Schattentabelle übernehmen kann.
Ich bin derzeit fest, wie könnte ich die Liste der Werte zurück von der obigen Anweisung speichern, weil in der Regel jede Tabelle aus mehr als einem Feld bestehen wird. Kann es mit Array getan werden? oder eine alternative Lösung zum Erstellen einer Schattentabelle für Audit-Trail-Zwecke?
Darf ich wissen, wie kann ich die cts-Anweisung in gespeicherte Prozedur ausführen? – huahsin68
'EXECUTE IMMEDIATE cts;' –
Wenn Sie dies mit 'Informix 11.50' ausführen, schreibt die' cts' Variable jede Spalte (in jeder 'foreach'), ist das das normale Verhalten? –