PostgreSQL GET DESCRIPTOR

2021-09-02 15:14 更新

GET DESCRIPTOR — 從一個 SQL 描述符區(qū)域得到信息

大綱

GET DESCRIPTOR descriptor_name :cvariable = descriptor_header_item [, ... ]
GET DESCRIPTOR descriptor_name VALUE column_number :cvariable = descriptor_item [, ... ]

描述

GET DESCRIPTOR從一個 SQL 描述符區(qū)域檢索關(guān)于一個查詢結(jié)果集的信息并且把它存儲在主變量中。在使用這個命令把信息傳輸?shù)街髡Z言變量之前,一個描述符區(qū)域通常是用FETCHSELECT填充的。

這個命令有兩種形式:第一種形式檢索描述符的頭部項,它適用于全面地查看結(jié)果集。一種例子是行計數(shù)。第二種形式要求列號作為附加參數(shù),它檢索有關(guān)一個特定列的信息。其例子是查看列名和實際列值。

參數(shù)

descriptor_name

一個描述符名稱。

descriptor_header_item

一個標識要檢索哪一個頭部信息項的記號。當前只支持用于得到結(jié)果集中列數(shù)的COUNT。

column_number

要檢索其信息的列號。計數(shù)從 1 開始。

descriptor_item

一個標識要檢索哪一個有關(guān)一列信息的項的記號。被支持的項可見第 35.7.1 節(jié)。

cvariable

接收從描述符區(qū)域檢索到的數(shù)據(jù)的主變量。

例子

檢索一個結(jié)果集中列數(shù)的例子:

EXEC SQL GET DESCRIPTOR d :d_count = COUNT;

檢索第一列中數(shù)據(jù)長度的例子:

EXEC SQL GET DESCRIPTOR d VALUE 1 :d_returned_octet_length = RETURNED_OCTET_LENGTH;

把第二列的數(shù)據(jù)體檢索成一個字符串的例子:

EXEC SQL GET DESCRIPTOR d VALUE 2 :d_data = DATA;

這里是執(zhí)行SELECT current_database();并且顯示列數(shù)、列數(shù)據(jù)長度和列數(shù)據(jù)的完整過程的例子:

int
main(void)
{
EXEC SQL BEGIN DECLARE SECTION;
    int  d_count;
    char d_data[1024];
    int  d_returned_octet_length;
EXEC SQL END DECLARE SECTION;

    EXEC SQL CONNECT TO testdb AS con1 USER testuser;
    EXEC SQL SELECT pg_catalog.set_config('search_path', '', false); EXEC SQL COMMIT;
    EXEC SQL ALLOCATE DESCRIPTOR d;

    /* 描述、打開一個游標,并且分配一個描述符給該游標  */
    EXEC SQL DECLARE cur CURSOR FOR SELECT current_database();
    EXEC SQL OPEN cur;
    EXEC SQL FETCH NEXT FROM cur INTO SQL DESCRIPTOR d;

    /* 得到全部列的數(shù)量 */
    EXEC SQL GET DESCRIPTOR d :d_count = COUNT;
    printf("d_count                 = %d\n", d_count);

    /* 得到一個返回列的長度 */
    EXEC SQL GET DESCRIPTOR d VALUE 1 :d_returned_octet_length = RETURNED_OCTET_LENGTH;
    printf("d_returned_octet_length = %d\n", d_returned_octet_length);

    /* 將返回的列取出成一個字符串 */
    EXEC SQL GET DESCRIPTOR d VALUE 1 :d_data = DATA;
    printf("d_data                  = %s\n", d_data);

    /* 關(guān)閉 */
    EXEC SQL CLOSE cur;
    EXEC SQL COMMIT;

    EXEC SQL DEALLOCATE DESCRIPTOR d;
    EXEC SQL DISCONNECT ALL;

    return 0;
}

當該例子被執(zhí)行時,結(jié)果看起來是:

d_count                 = 1
d_returned_octet_length = 6
d_data                  = testdb

兼容性

SQL 標準中說明了GET DESCRIPTOR。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號