指派儲存體
應用程式可以在執行 SQL 陳述式之前或之後指派結果的儲存體。如果應用程式先準備或執行 SQL 陳述式,它就可以查詢結果集的相關資訊,然後再指派結果的儲存體。例如,如果結果集是未知的,應用程式就必須擷取資料行的數目,然後才能指派它們的儲存體。
若要與資料行的儲存體產生關聯,應用程式會呼叫 SQLBindCol並傳遞下列資訊:
要轉換資料的目標資料類型。
資料之輸出緩衝區的位址。
應用程式必須配置這個緩衝區,而且緩衝區必須夠大,足以用轉換的格式來保存資料。
輸出緩衝區的長度。
如果傳回的資料具有固定寬度 C (例如整數、實數或資料結構),系統就會忽略此值。
要傳回可用資料之位元組數目的儲存緩衝區位址。
應用程式也可以將結果集資料行繫結至程式變數的陣列,以便支援在區塊中提取結果集資料行。陣列繫結有兩種不同的類型:
當每個資料行繫結至自己的變數陣列時,就會完成資料行取向繫結。
藉由呼叫 Attribute 是設為 SQL_ATTR_ROW_BIND_TYPE 以及 ValuePtr 是設為 SQL_BIND_BY_COLUMN 的 SQLSetStmtAttr,就可以指定資料行取向繫結。所有陣列的元素數目都必須相同。
當 SQL 陳述式的所有參數都是以單位的形式繫結至含有參數個別變數的結構陣列時,就會完成資料列取向繫結。
藉由呼叫 Attribute 是設定為 SQL_ATTR_ROW_BIND_TYPE 以及 ValuePtr 是設定為含有變數 (將會接收結果集資料行) 之結構大小的 SQLSetStmtAttr,就可以指定資料列取向繫結。
應用程式也會將 SQL_ATTR_ROW_ARRAY_SIZE 設定為資料行或資料列陣列中的元素數目,並且設定 SQL_ATTR_ROW_STATUS_PTR 和 SQL_ATTR_ROWS_FETCHED_PTR。