Wie werden Metadaten verwendet?
Anwendungen erfordern Metadaten für die meisten Resultsetvorgänge. Die Anwendung verwendet z. B. den Datentyp einer Spalte, um zu bestimmen, welche Art von Variable an diese Spalte gebunden werden soll. Es verwendet die Bytelänge einer Zeichenspalte, um zu bestimmen, wie viel Platz zum Anzeigen von Daten aus dieser Spalte erforderlich ist. Wie eine Anwendung die Metadaten für eine Spalte bestimmt, hängt vom Typ der Anwendung ab.
Vertikale Anwendungen arbeiten mit vordefinierten Tabellen und führen vordefinierte Vorgänge für diese Tabellen aus. Da die Resultsetmetadaten für solche Anwendungen definiert werden, bevor die Anwendung sogar geschrieben und vom Anwendungsentwickler gesteuert wird, kann sie hartcodiert werden. Wenn beispielsweise eine OrderID-Spalte in der Datenquelle als 4-Byte-Ganzzahl definiert ist, kann die Anwendung stets eine 4-Byte-Ganzzahl an diese Spalte binden. Wenn Metadaten in der Anwendung hartcodiert sind, bedeutet eine Änderung an den von der Anwendung verwendeten Tabelle im Allgemeinen eine Änderung am Anwendungscode. Dies ist selten ein Problem, da solche Änderungen in der Regel als Teil einer neuen Version der Anwendung vorgenommen werden.
Wie bei vertikalen Anwendungen funktionieren benutzerdefinierte Anwendungen in der Regel mit vordefinierten Tabellen und führen vordefinierte Vorgänge für diese Tabellen aus. Beispielsweise kann eine Anwendung geschrieben werden, um Daten zwischen drei verschiedenen Datenquellen zu übertragen; die zu übertragenden Daten sind in der Regel bekannt, wenn die Anwendung geschrieben wird. Daher weisen benutzerdefinierte Anwendungen häufig hartcodierte Metadaten auf.
Generische Anwendungen, insbesondere solche, die Ad-hoc-Abfragen unterstützen, kennen fast nie die Metadaten der von ihnen erstellten Resultsets. Daher müssen sie die Metadaten zur Laufzeit mithilfe der Funktionen SQLNumResultCols, SQLDescribeCols und SQLColAttribute ermitteln, die im nächsten Abschnitt beschrieben werden, SQLDescribeCol und SQLColAttribute.
Alle Anwendungen können unabhängig vom Typ hartcodierte Metadaten für die von den Katalogfunktionen zurückgegebenen Resultsets hartcodieren. Diese Resultsets werden im Referenzabschnitt dieses Handbuchs definiert.