DECLARE VARIABLE
DECLARE VARIABLE 陳述式是用來指派子類型或 CCSID (非主變數的預設值)。
呼叫
此陳述式只能內嵌在應用程式中。 它不是可執行的陳述式。 不得在 Java™ 或 REXX 中指定。
授權
無需採取任何回復動作。
語法
說明
- 主變數
- 為程式中定義的字元、圖形或 XML 字串主變數命名。 無法為主變數指定指示器變數。 主變數定義可以在參照該變數的 DECLARE VARIABLE 陳述式之前或之後。
- 針對位元資料
- 指定主變數的值與編碼字集無關,因此永不轉換。 FOR BIT DATA 主變數的 CCSID 是 65535。 無法為圖形或 XML 主變數指定 FOR BIT DATA。
- 針對 SBCS 資料
- 指定主變數的值包含 SBCS (單位元組字集) 資料。 如果應用要求程式中工作的 CCSID 屬性不是 DBCS-capable ,或主變數的長度小於 4 ,則 FOR SBCS DATA 是預設值。 FOR SBCS DATA 的 CCSID 由應用程式要求程式中工作的 CCSID 屬性決定。 無法對圖形或 XML 主變數指定 FOR SBCS DATA。
- 針對混合資料
- 指定主變數的值同時包含 SBCS 資料和 DBCS 資料。 如果應用程式要求程式中工作的 CCSID 屬性是 DBCS-capable ,且主變數的長度大於 3 ,則 FOR MIXED DATA 是預設值。 FOR DBCS DATA 的 CCSID 由應用要求程式之工作的 CCSID 屬性決定。 無法對圖形或 XML 主變數指定 FOR MIXED DATA。
- CCSID 整數
- 指定主變數的值包含 CCSID 整數資料。 如果整數是 SBCS CCSID ,則主變數是 SBCS 資料。 如果整數是混合資料 CCSID ,則主變數是混合資料。 對於字元主變數,指定的 CCSID 必須是 SBCS 或混合 CCSID。
如果變數具有圖形字串資料類型,則指定的 CCSID 必須是 DBCS、 UTF-16或 UCS-2 CCSID。 如需有效 CCSID 的清單,請參閱 CCSID 值。 請考慮指定 CCSID 1200 或 13488 ,以指出 UTF-16 或 UCS-2 資料。 如果未指定 CCSID ,則圖形字串變數的 CCSID 會是工作的相關 DBCS CCSID。
如果變數具有 XML 資料類型,則指定的 CCSID 必須是 SBCS、混合或 Unicode CCSID。 CCSID 必須與 XML AS 資料類型相容。 如果未指定 CCSID ,則會使用 SQL_XML_DATA_CCSID QAQQINI 設定所指定的 CCSID 值。 如需相關資訊,請參閱 XML 值 。
對於檔案參照變數, CCSID 會指定路徑及檔名的 CCSID ,而不是檔案內的資料。
- DATE
- 指定主變數的值包含日期資料。
- 時間
- 指定主變數的值包含時間資料。
- TIMESTAM
- 指定主變數的值包含時間戳記的資料。
BOOLEAN
指定主變數的值包含布林資料。
附註
放置限制: 在應用程式中可以在 SQL 陳述式有效的任何位置指定 DECLARE VARIABLE 陳述式,但有下列例外:
- 如果主電腦語言是 COBOL 或 RPG ,則 DECLARE VARIABLE 陳述式必須出現在參照 DECLARE VARIABLE 陳述式中所指定主電腦變數的 SQL 陳述式之前。
- 如果對 C 中以 NUL 結尾的字串指定 DATE、TIME 或 TIMESTAMP ,則 C 宣告的長度會減少 1。
前置編譯器規則: 下列狀況會在前置編譯期間產生錯誤訊息:
- 對不存在的變數進行參照。
- 會參照數值變數。
- 對已參照的變數進行參照。
- 會對非唯一的變數進行參照。
- 會參照定義為 UCS-2的 ILE RPG 變數。
- 參照定義為 NATIONAL 的 ILE COBOL 變數。
- 在 SQL 陳述式之後出現 DECLARE VARIABLE 陳述式,其中 SQL 陳述式及 DECLARE VARIABLE 陳述式參照相同的變數。
- 針對圖形或 XML 主變數指定 FOR BIT DATA、FOR SBCS DATA 或 FOR MIXED DATA 子句。
- 為圖形主變數指定 SBCS 或混合 CCSID。
- 為字元主變數指定 DBCS、 UTF-16或 UCS-2 CCSID。
- 已對 XML 主變數指定 DBCS CCSID。
- 為非字元的主變數指定 DATE、TIME、TIMESTAMP 或
BOOLEAN
。 - 用於 DATE、TIME 或 TIMESTAMP 的主變數長度對於最小日期、時間或時間戳記值而言不夠長。
用於 BOOLEAN 的主變數長度不是 1。
範例
在此範例中,將 C 程式變數 fred 及 pete 宣告為混合資料,並將 jean 及 dave 宣告為具有 CCSID 37 的 SBCS 資料。
void main ()
{
EXEC SQL BEGIN DECLARE SECTION;
char fred[10];
EXEC SQL DECLARE :fred VARIABLE FOR MIXED DATA;
decimal(6,0) mary;
char pete[4];
EXEC SQL DECLARE :pete VARIABLE FOR MIXED DATA;
char jean[30];
char dave[9];
EXEC SQL DECLARE :jean, :dave VARIABLE CCSID 37;
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA;
...
}
