Udostępnij za pośrednictwem


SQLGetDescField

The SQL Server Native klient ODBC driver exposes driver-specific descriptor fields for the implementation row descriptor (IRD) only. W ramach IRD, SQL Server pola deskryptora są odwoływać za pomocą atrybutów specyficznych dla sterownika kolumna. Aby uzyskać informacje na temat pełną listę pól dostępnych deskryptora specyficzne dla sterownika zobacz SQLColAttribute.

Pola deskryptora, które zawierają kolumna Identyfikator ciągi są często ciągi znaków o zerowej długości.Wszystkie SQL Server-określonego deskryptora wartości pole są odczytywane - tylko.

Jak pobrać atrybutów z SQLColAttribute, pola deskryptora raportujących poziom wiersza atrybutów (takie jak SQL_CA_SS_COMPUTE_ID) są raportowane dla wszystkich kolumn zestaw wyników.

SQLGetDescField i parametry Valued tabela

SQLGetDescField można uzyskać wartości dla atrybutów rozszerzonych wycenione tabela parametrów i parametr wycenione tabela kolumn.Aby uzyskać więcej informacji na temat parametrów wycenione tabela zobacz Tabela Valued parametry (ODBC).

Obsługa SQLGetDescField Data rozszerzony i czas funkcje

Aby uzyskać informacje dotyczące dostępnych pól deskryptora z typami nowe data/godziny zobacz Parametr i wynik metadane.

Aby uzyskać więcej informacji zobaczData / czas ulepszenia (ODBC).

Obsługa SQLGetDescField duże UDTs CLR

SQLGetDescField obsługuje dużą CLR typów zdefiniowanych przez użytkownika (UDTs).Aby uzyskać więcej informacji zobaczDuże CLR typy zdefiniowane przez użytkownika (ODBC).

Obsługa SQLGetDescField odstępem kolumny

SQLGetDescField można zbadać nowe pole IRD SQL_CA_SS_IS_COLUMN_SET można określić, czy kolumna jest column_set Kolumna.

Aby uzyskać więcej informacji zobaczObsługa rozrzedzenia kolumny (ODBC).

Przykład

typedef struct tagCOMPUTEBYLIST
    {
    SQLSMALLINT nBys;
    SQLSMALLINT aByList[1];
    } COMPUTEBYLIST;
typedef COMPUTEBYLIST* PCOMPUTEBYLIST; 

SQLHDESC    hIRD; 
SQLINTEGER  cbIRD; 
SQLINTEGER  nSet = 0; 

// . . .
// Execute a statement that contains a COMPUTE clause,
//  then get the descriptor handle of the IRD and
//  get some IRD values.

SQLGetStmtAttr(g_hStmt, SQL_ATTR_IMP_ROW_DESC,
    (SQLPOINTER) &hIRD, sizeof(SQLHDESC), &cbIRD);

// For statement-wide column attributes, any
//  descriptor record will do. You know that 1 exists,
//  so use it.
SQLGetDescField(hIRD, 1, SQL_CA_SS_NUM_COMPUTES,
    (SQLPOINTER) &nComputes, SQL_IS_INTEGER, &cbIRD);

if (nSet == 0)
    {
    SQLINTEGER      nOrderID;

    printf_s("Normal result set.\n");

    for (nCol = 0; nCol < nCols; nCol++)
        {
        SQLGetDescField(hIRD, nCol+1,
            SQL_CA_SS_COLUMN_ORDER,
            (SQLPOINTER) &nOrderID, SQL_IS_INTEGER,
            &cbIRD);

        if (nOrderID != 0)
            {
            printf_s("Col in ORDER BY, pos: %ld",
                nOrderID);
            }
            printf_s("\n");
        }

    printf_s("\n");
    }
else
    {
    PCOMPUTEBYLIST  pByList;
    SQLSMALLINT     nBy;
    SQLINTEGER      nColID;

    printf_s("Computed result set number: %lu\n",
        nSet);

    SQLGetDescField(hIRD, 1, SQL_CA_SS_COMPUTE_BYLIST,
        (SQLPOINTER) &pByList, SQL_IS_INTEGER,
        &cbIRD);

    if (pByList != NULL)
        {
        printf_s("Clause ordered by columns: ");
        for (nBy = 0; nBy < pByList->nBys; )
            {
            printf_s("%u", pByList->aByList[nBy]);
            nBy++;

            if (nBy == pByList->nBys)
                {
                printf_s("\n");
                }
            else
                {
                printf_s(", ");
                }
            }
        }
    else
        {
        printf_s("Compute clause set not ordered.\n");
        }

    for (nCol = 0; nCol < nCols; nCol++)
        {
        SQLGetDescField(hIRD, nCol+1,
            SQL_CA_SS_COLUMN_ID, (SQLPOINTER) &nColID,
            SQL_IS_INTEGER, &cbIRD);
        printf_s("ColumnID: %lu, nColID);
        }
    printf_s("\n");
    }

if (SQLMoreResults(g_hStmt) == SQL_SUCCESS)
    {
    // Determine the result set indicator.
    SQLGetDescField(hIRD, 1, SQL_CA_SS_COMPUTE_ID,
        (SQLPOINTER) &nSet, SQL_IS_INTEGER, &cbIRD);
    }