Teilen über


Beschreiben von Parametern

SQLBindParameter verfügt über Argumente, die den Parameter beschreiben: den SQL-Typ, die Genauigkeit und die Skalierung. Der Treiber verwendet diese Informationen oder Metadaten, um den Parameterwert in den Typ zu konvertieren, der von der Datenquelle benötigt wird. Auf den ersten Blick kann es vorkommen, dass der Treiber besser in der Lage ist, die Parametermetadaten als die Anwendung zu kennen; Schließlich kann der Treiber die Metadaten für eine Resultsetspalte problemlos ermitteln. Wie sich herausstellt, ist dies nicht der Fall. Zunächst bieten die meisten Datenquellen keine Möglichkeit für den Treiber, Parametermetadaten zu ermitteln. Zweitens kennen die meisten Anwendungen bereits die Metadaten.

Wenn eine SQL-Anweisung in der Anwendung hartcodiert ist, kennt der Anwendungsautor bereits den Typ der einzelnen Parameter. Wenn eine SQL-Anweisung zur Laufzeit von der Anwendung erstellt wird, kann die Anwendung die Metadaten ermitteln, während sie die Anweisung erstellt. Beispiel: Wenn die Anwendung die Klausel erstellt

WHERE OrderID = ?  

sie kann SQLColumns für die Spalte "OrderID" aufrufen.

Die einzige Situation, in der die Anwendung die Parametermetadaten nicht leicht bestimmen kann, ist, wenn der Benutzer eine parametrisierte Anweisung eingibt. In diesem Fall ruft die Anwendung SQLPrepare auf, um die Anweisung vorzubereiten, SQLNumParams , um die Anzahl der Parameter zu bestimmen, und SQLDescribeParam , um die einzelnen Parameter zu beschreiben. Wie bereits erwähnt, bieten die meisten Datenquellen jedoch keine Möglichkeit für den Treiber, Parametermetadaten zu ermitteln, sodass SQLDescribeParam nicht weit verbreitet wird.