C 及 C++ 內嵌式 SQL 應用程式中的主變數

主變數是在 SQL 陳述式內參照的 C 或 C++ 語言變數。 主變數容許應用程式與資料庫管理程式交換資料。

在前置編譯應用程式之後,編譯器會使用主變數作為任何其他 C 或 C++ 變數。 在命名、宣告及使用主變數時,請遵循下列各節中說明的規則。

長變數考量

在手動建構 SQLDA 的應用程式中,當 sqlvar::sqltype==SQL_TYP_INTEGER時,無法使用長變數。 相反地,必須使用 sqlint32 類型。 此問題與在主變數宣告中使用長變數相同,不同之處在於使用手動建構的 SQLDA 時,前置編譯器將不會發現此錯誤,且會發生執行時期錯誤。

任何用來存取 sqlvar: :sqldata 資訊的長且未簽署的長強制轉型都必須變更為 sqlint32sqluint32sqloptionssqla_option 結構的 Val 成員宣告為 sqluintptr。 因此,將指標成員指派給 sqla_option::valsqloptions::val 成員應該使用 sqluintptr 強制轉型,而不是不帶正負號的長強制轉型。 此變更不會在 64 位元 UNIX 及 Linux® 作業系統中造成執行時期問題,但應該為 64 位元 Windows 應用程式 (其中長類型僅為 32 位元) 進行準備。

多位元組編碼考量

部分字元編碼方法 (特別是來自東亞地區的字元編碼方法) 需要多個位元組來代表一個字元。 這種資料的外部表示法稱為字元的 多位元組字元碼 表示法,並包含雙位元組字元 (以兩個位元組表示的字元)。 將相應地選擇主變數,因為 Db2® 中的圖形資料是由雙位元組字元所組成。

若要操作具有雙位元組字元的字串,應用程式可以很方便地使用資料的內部表示法。 此內部表示法稱為雙位元組字元的 寬字元碼 表示法,是 wchar_t C 或 C++ 資料類型中常用的格式。 符合 ANSI C 及「X/OPEN 可攜性手冊 4」(XPG4) 的子常式可用於處理寬字元資料,以及在多位元組格式之間來回轉換寬字元格式的資料。

請注意,雖然應用程式可以處理多位元組格式或寬字元格式的字元資料,但與 資料庫管理程式 的互動只會使用 DBCS (多位元組) 字元碼。 也就是說,資料會以 DBCS 格式儲存在 GRAPHIC 直欄中,並從 GRAPHIC 直欄中擷取。 提供 WCHARTYPE 前置編譯器選項,以容許在與資料庫引擎交換時,將寬字元格式的應用程式資料轉換成多位元組格式,或從多位元組格式轉換成多位元組格式。