DECLARE VARIABLE

DECLARE VARIABLE 陳述式是用來指派子類型或 CCSID (非主變數的預設值)。

呼叫

此陳述式只能內嵌在應用程式中。 它不是可執行的陳述式。 不得在 Java™ 或 REXX 中指定。

授權

無需採取任何回復動作。

語法

讀取語法圖跳過視覺化語法圖DECLARE,主變數VARIABLEFOR SBCS DATAFOR MIXED DATACCSID整數FOR BIT DATADATETIMETIMESTAMPBOOLEAN

說明

主變數
為程式中定義的字元、圖形或 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 程式變數 fredpete 宣告為混合資料,並將 jeandave 宣告為具有 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;   
   ...

  }