目錄函式所傳回的資料

每個目錄函式都會以結果集的形式傳回資料。 此結果集與任何其他結果集並無不同。 結果集通常是由預先定義的參數化 SELECT 陳述式所產生,這些陳述式會在驅動程式中經過硬式編碼,或儲存在資料來源的程序中。 如要了解如何從結果集擷取資料,請參閱已建立結果集了嗎? (機器翻譯)。

每個目錄函式的結果集都會在該函式的參考輸入內容中描述。 除了已列出的資料行外,結果集還可能包含最後一個預先定義資料行之後的驅動程式專用資料行。 驅動程式文件中會說明這些資料行的詳情 (如有資料行存在)。

應用程式應該會繫結相對於結果集結尾的驅動程式專用資料行。 也就是說,應用程式應該將驅動程式專用資料行的數目,計算為使用 SQLNumResultCols 擷取的最後一個資料行數目,再減去於必要資料行之後發生的資料行數目。 如此一來,將新資料行新增至未來版本 ODBC 或驅動程式的結果集時,就無須變更應用程式。 若要讓此配置能夠運作,驅動程式必須在舊驅動程式專用的資料行之前,加入新的驅動程式專用資料行,如此一來,資料行數目就不會相對於結果集的結尾變更。

即使結果集中包含特殊字元,結果集中傳回的識別碼也不會加上引號。 例如,假設識別碼引號字元 (為驅動程式專用,且透過 SQLGetInfo 傳回) 的識別碼引號字元是雙引號 ("),且「應付帳款」資料表包含名為「客戶名稱」的資料行。 則在 SQLColumns 針對此資料行傳回的資料列中,TABLE_NAME 資料行的值是「應付帳款」(不含引號),而不是 "應付帳款"(含引號),而 COLUMN_NAME 資料行的值是「客戶名稱」(不含引號),而不是 "客戶名稱"(含引號)。 若要擷取「應付帳款」資料表中的客戶名稱,應用程式會使用下列名稱,並加上引號:

SELECT "Customer Name" FROM "Accounts Payable"  

如需詳細資訊,請參閱引號識別項 (機器翻譯)。

目錄函式是以類似 SQL 的授權模型為基礎,而連線是以使用者名稱和密碼為基礎,而且只會傳回使用者具使用權限的資料。 個別檔案的密碼保護不符合此模型,是由驅動程式所定義。

目錄函式傳回的結果集幾乎永遠不會更新,而且應用程式理論上也不能透過變更這些結果集中的資料,來變更資料庫的結構。