將主變數宣告為 C 及 C++ 內嵌式 SQL 應用程式中的指標
您可以將主變數宣告為指向特定資料類型的指標。 不過,有一些您應該注意的格式化準則。
在您可以宣告主變數指標之前,必須考量下列限制:
- 如果主變數宣告為指標,則在相同來源檔內無法宣告具有該相同名稱的其他主變數。 不容許下列範例:
char mystring[20]; char (*mystring)[20]; - 當宣告指向以空值結尾之字元陣列的指標時,請使用括弧。 在所有其他情況下,不接受括弧。 例如:
EXEC SQL BEGIN DECLARE SECTION; char (*arr)[10]; /* correct */ char *(arr); /* incorrect */ char *arr[10]; /* incorrect */ EXEC SQL END DECLARE SECTION;第一個宣告是 10 位元組字元陣列的指標。 這是有效的主變數。 第二個不是有效的宣告。 在指向字元的指標中不容許括弧。 第三個宣告是指標陣列。 這不是受支援的資料類型。
主變數宣告:char *ptr;接受,但它並不表示 以空值結尾且長度未定的字串。 相反地,它表示 指向固定長度單一字元主變數的指標。 這可能不是預期的情況。 若要定義可指出不同字串的指標主變數,請使用本主題先前顯示的第一個宣告格式。
- 在 SQL 陳述式中使用指標主變數時,它們的字首應該與用來宣告它們的星號數目相同,如下列範例所示:
EXEC SQL BEGIN DECLARE SECTION; char (*mychar)[20]; /* Pointer to character array of 20 bytes */ EXEC SQL END DECLARE SECTION; EXEC SQL SELECT column INTO :*mychar FROM table; /* Correct */ - 在主變數名稱上只能使用星號作為運算子。
- 主變數名稱的長度上限不受指定的星號數目影響,因為星號不被視為名稱的一部分。
- 每當在 SQL 陳述式中使用指標變數時,您應該將最佳化層次前置編譯選項 (OPTLEVEL) 保留為預設值 0 (無最佳化)。 這表示資料庫管理程式不會執行 SQLDA 最佳化。