2008-09-16 11 views
1

Ich habe eine Abfrage, die dynamisch nach dem Nachschlagen einer Feldliste und Tabellenname erstellt wird. Ich führe diese dynamische Abfrage innerhalb eines gespeicherten Proc aus. Die Abfrage wird ohne eine where-Klausel erstellt, wenn die beiden proc-Parameter null sind, und mit einer where-Klausel erstellt, wenn dies nicht der Fall ist.Nur Spalteninfo Zurückgegeben mit FMTONLY auf OFF

Als ich das proc mit SET FMTONLY ON exec [cpExportRecordType_ListByExportAgentID] null ausführen, null Es gibt keine Spalteninformationen. Ich habe gerade das Erstellen der Abfrage ohne eine where-Klausel ersetzt, um die gleiche Abfrage direkt auszuführen, und jetzt bekomme ich Spalteninformationen. Ich würde gerne wissen, was das verursacht, irgendjemand?

Antwort

0

kristof:

so haben Sie keine Daten, die Sie dynamische Abfrage zu erstellen.

Mit null Parameter meine dynamische Abfrage war eine reine Stringliteral, unabhängig von Daten. Durch Ändern in eine statische Abfrage wurde das Problem gelöst.

1

Vielleicht hängt es mit der Tatsache zusammen, dass die übergebenen Parameter NULL sind, überprüfen, wie Ihre Abfrage erstellt wird, vielleicht verhält es sich anders als erwartet, wenn Sie NULL übergeben. Liefert proc die erwarteten Ergebnisse beim Aufruf: SET FMTONLY OFF exec [cpExportRecordType_ListByExportAgentID] null, null ?

Andere Möglichkeit: Ich verstehe, dass Sie Ihre Abfrage dynamisch erstellen, indem Sie Ergebnisse aus dem Aufruf einer anderen Abfragen erhalten, um die Spaltennamen zu erhalten. Möglicherweise gibt die Abfrage, die normalerweise die Spaltennamen zurückgibt, keine Daten zurück, sondern nur Spalteninformationen (SET FMTONLY ON), sodass Sie keine Daten zum Erstellen Ihrer dynamischen Abfrage haben.