Cách kiểm tra kiểu dữ liệu của cột trong SQL

SQLColumns[] trả về danh sách các cột trong các bảng đã chỉ định. Thông tin được trả về trong tập kết quả SQL, có thể được truy xuất bằng cách sử dụng cùng các hàm tìm nạp tập kết quả mà một truy vấn tạo ra

Thông số kỹ thuật ODBC cho SQLColumns[]

Bảng 1. Thông số kỹ thuật của SQLColumns[] Mức thông số kỹ thuật ODBC Trong thông số kỹ thuật X/Open CLI CAE?Trong thông số kỹ thuật ISO CLI?1. 0CóKhông

cú pháp

SQLRETURN   SQLColumns       [SQLHSTMT          hstmt,
                              SQLCHAR     FAR   *szCatalogName,
                              SQLSMALLINT       cbCatalogName,
                              SQLCHAR     FAR   *szSchemaName,
                              SQLSMALLINT       cbSchemaName,
                              SQLCHAR     FAR   *szTableName,
                              SQLSMALLINT       cbTableName,
                              SQLCHAR     FAR   *szColumnName,
                              SQLSMALLINT       cbColumnName];

đối số chức năng

Bảng sau liệt kê kiểu dữ liệu, cách sử dụng và mô tả cho từng đối số trong hàm này

Bảng 2. SQLColumns[] đối số Kiểu dữ liệuArgumentUseDescriptionSQLHSTMT hstmt inputXác định xử lý câu lệnh. SQLCHAR * szCatalogName inputIxác định bộ đệm có thể chứa giá trị mẫu để . Danh mục là phần đầu tiên của tên bảng gồm ba phần.

Đây phải là một con trỏ null hoặc một chuỗi có độ dài bằng không

SQLSMALLINT cbCatalogName inputXác định độ dài, tính bằng byte, của szCatalogName. This must be set to 0.SQLCHAR *szSchemaName inputIxác định bộ đệm có thể chứa giá trị mẫu để . SQLSMALLINT cbSchemaName inputChỉ định độ dài, tính bằng byte, của szSchemaName . SQLCHAR * szTableName inputIxác định vùng đệm có thể chứa giá trị mẫu để đủ điều kiện đặt kết quả theo tên bảng. SQLSMALLINT cbTableName inputChỉ định độ dài, tính bằng byte, của szTableName . SQLCHAR * szColumnName inputIxác định vùng đệm có thể chứa giá trị mẫu để đủ điều kiện đặt kết quả theo tên cột. SQLSMALLINT cb Tên cột inputChỉ định độ dài, tính bằng byte, của Column_Name .

Cách sử dụng

Hàm này lấy thông tin về các cột của một bảng hoặc một tập hợp các bảng. Thông thường, bạn gọi hàm này sau khi bạn gọi

/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    
0 để xác định các cột của bảng. Sử dụng các chuỗi ký tự được trả về trong các cột TABLE_SCHEM và TABLE_NAME của tập kết quả
/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    
0 làm đầu vào cho hàm này

SQLColumns[] trả về một tập hợp kết quả tiêu chuẩn, được sắp xếp theo TABLE_CAT, TABLE_SCHEM, TABLE_NAME và ORDINAL_POSITION. Bảng 3 liệt kê các cột trong tập kết quả

Các đối số szSchemaName, szTableNameszColumnName chấp nhận .

Bởi vì các cuộc gọi tới SQLColumns[] thường dẫn đến một truy vấn danh mục phức tạp và tốn kém, hãy sử dụng các cuộc gọi này một cách tiết kiệm và lưu kết quả thay vì lặp lại các cuộc gọi

Các cột VARCHAR của tập kết quả hàm danh mục được khai báo với thuộc tính độ dài tối đa là 128 byte [phù hợp với tiêu chuẩn ANSI/ISO SQL năm 1992 limits]. Because Db2 ít hơn 128 ký tự nên ứng dụng có thể chọn luôn dành 128 ký tự [cộng với dấu kết thúc nul] cho bộ đệm đầu ra. Ngoài ra, bạn có thể gọi

/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    
0 với đối số InfoType được đặt thành từng giá trị sau.
  • SQL_MAX_CATALOG_NAME_LEN, để xác định độ dài của các cột TABLE_CAT mà hệ thống quản lý cơ sở dữ liệu được kết nối hỗ trợ
  • SQL_MAX_SCHEMA_NAME_LEN, để xác định độ dài của các cột TABLE_SCHEM mà hệ thống quản lý cơ sở dữ liệu được kết nối hỗ trợ
  • SQL_MAX_TABLE_NAME_LEN, để xác định độ dài của các cột TABLE_NAME mà hệ thống quản lý cơ sở dữ liệu được kết nối hỗ trợ
  • SQL_MAX_COLUMN_NAME_LEN, để xác định độ dài của cột COLUMN_NAME mà hệ thống quản lý cơ sở dữ liệu được kết nối hỗ trợ

Mặc dù các cột mới có thể được thêm vào và tên của các cột hiện có có thể thay đổi trong các bản phát hành sau này, nhưng vị trí của các cột hiện tại sẽ không thay đổi. Bảng sau đây liệt kê các cột trong tập hợp kết quả mà SQLColumns[] hiện đang trả về

Bảng 3. Các cột được trả về bởi SQLColumns[] Số cộtTên cộtKiểu dữ liệuMô tả1TABLE_CATVARCHAR[128]Luôn rỗng. 2TABLE_SCHEMVARCHAR[128]Xác định tên của giản đồ chứa TABLE_NAME. 3TABLE_NAMEVARCHAR[128] NOT NULLIxác định tên của bảng, dạng xem, bí danh hoặc từ đồng nghĩa. 4COLUMN_NAMEVARCHAR[128] NOT NULLXác định cột được mô tả. Cột này chứa tên cột của bảng, dạng xem, bí danh hoặc từ đồng nghĩa đã chỉ định. 5DATA_TYPESMALLINT NOT NULLXác định kiểu dữ liệu SQL của cột mà COLUMN_NAME chỉ ra. 6TYPE_NAMEVARCHAR[128] NOT NULLIxác định chuỗi ký tự đại diện cho tên của loại dữ liệu tương ứng với cột tập hợp kết quả DATA_TYPE. 7COLUMN_SIZEINTEGERNếu giá trị cột DATA_TYPE biểu thị một ký tự hoặc chuỗi nhị phân, thì cột này chứa độ dài ký tự tối đa cho cột.

Đối với các loại dữ liệu ngày, giờ, dấu thời gian, đây là tổng số ký tự được yêu cầu để hiển thị giá trị khi nó được chuyển đổi thành ký tự

Đối với các loại dữ liệu số, đây là tổng số chữ số hoặc tổng số bit được phép trong cột, tùy thuộc vào giá trị trong cột NUM_PREC_RADIX trong tập hợp kết quả

Đối với kiểu dữ liệu XML, độ dài bằng 0 được trả về

8BUFFER_LENGTHINTEGERCho biết số byte tối đa cho bộ đệm C được liên kết để lưu trữ dữ liệu từ cột này nếu SQL_C_DEFAULT được chỉ định trên các lệnh gọi
/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    
3,
/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    
4 và
/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    
5. Độ dài này không bao gồm bất kỳ bộ kết thúc nul nào. Đối với các loại dữ liệu số chính xác, độ dài chiếm phần thập phân và dấu. 9DECIMAL_DIGITSSMALLINT cho biết tỷ lệ của cột. NULL được trả về cho các loại dữ liệu không áp dụng tỷ lệ. 10NUM_PREC_RADIXSMALLINTSchỉ định 10, 2 hoặc NULL

Nếu DATA_TYPE là một loại dữ liệu số gần đúng, thì cột này chứa giá trị 2 và cột COLUMN_SIZE chứa số bit được phép trong cột

Nếu DATA_TYPE là loại dữ liệu số chính xác, thì cột này chứa giá trị 10 và COLUMN_SIZE chứa số chữ số thập phân được phép cho cột

Đối với các kiểu dữ liệu số, hệ thống quản lý cơ sở dữ liệu có thể trả về giá trị NUM_PREC_RADIX là 10 hoặc 2

NULL được trả về cho các loại dữ liệu không áp dụng cột NUM_PREC_RADIX

11NULLABLESMALLINT NOT NULLChứa SQL_NO_NULLS nếu cột không chấp nhận giá trị null

Chứa SQL_NULLABLE nếu cột chấp nhận giá trị null

12REMARKSVARCHAR[762]Chứa bất kỳ thông tin mô tả nào về cột. 13COLUMN_DEFVARCHAR[254]Xác định giá trị mặc định cho cột

Nếu giá trị mặc định là một chữ số, thì cột này chứa biểu diễn ký tự của chữ số không có dấu nháy đơn kèm theo

Nếu giá trị mặc định là một chuỗi ký tự, thì cột này là chuỗi đó, được đặt trong dấu nháy đơn

Nếu giá trị mặc định là giả chữ , chẳng hạn như đối với các cột NGÀY, GIỜ và DẤU THỜI GIAN, thì cột này chứa từ khóa của .

Nếu NULL được chỉ định làm giá trị mặc định, cột này sẽ trả về từ NULL, không có dấu nháy đơn kèm theo

Nếu giá trị mặc định không thể được biểu thị mà không bị cắt bớt, thì cột này chứa giá trị ĐƯỢC CẮT TRUNCATED không có dấu nháy đơn kèm theo

Nếu không có giá trị mặc định nào được chỉ định, cột này là null

14SQL_DATA_TYPESMALLINT NOT NULLCho biết kiểu dữ liệu SQL. Cột này giống với cột DATA_TYPE

Đối với các loại dữ liệu ngày giờ, trường SQL_DATA_TYPE trong tập hợp kết quả là SQL_DATETIME và trường SQL_DATETIME_SUB trả về mã con cho loại dữ liệu ngày giờ cụ thể [SQL_CODE_DATE, SQL_CODE_TIME hoặc SQL_CODE_TIMESTAMP]

15SQL_DATETIME_SUBSMALLINT Mã kiểu con cho kiểu dữ liệu ngày giờ có thể là một trong các giá trị sau
  • SQL_CODE_DATE
  • SQL_CODE_TIME
  • SQL_CODE_TIMESTAMP
Đối với tất cả các loại dữ liệu khác, cột này trả về NULL. 16CHAR_OCTET_LENGTHINTEGER

Chứa độ dài tối đa tính bằng byte cho một cột dữ liệu ký tự. Đối với các bộ ký tự một byte, giá trị này giống như COLUMN_SIZE. Đối với loại XML, số 0 được trả về. Đối với các loại dữ liệu không phải là kiểu dữ liệu ký tự hoặc kiểu dữ liệu XML, nó là null

17ORDINAL_POSITIONINTEGER NOT NULLVị trí thứ tự của cột trong bảng. Cột đầu tiên trong bảng là số 1. 18IS_NULLABLEVARCHAR[254]Chứa chuỗi 'KHÔNG' nếu cột được biết là không thể rỗng;

Tập hợp kết quả mà bảng trước mô tả giống hệt với đặc tả tập hợp kết quả X/Open CLI Columns[], là phiên bản mở rộng của tập hợp kết quả SQLColumns[] mà ODBC 2. 0 chỉ định. Tập hợp kết quả ODBC SQLColumns[] bao gồm mọi cột ở cùng một vị trí cho đến cột NHẬN XÉT

Db2 Các ứng dụng ODBC phát hành SQLColumns[] đối với máy chủ Db2 cho z/OS® sẽ mong đợi .

Trả lại mã

Sau khi bạn gọi SQLColumns[], nó sẽ trả về một trong các giá trị sau

  • SQL_SUCCESS
  • SQL_SUCCESS_WITH_INFO
  • SQL_ERROR
  • SQL_INVALID_HANDLE

chẩn đoán

Bảng sau đây liệt kê từng SQLSTATE mà hàm này tạo ra, với mô tả và giải thích cho từng giá trị

Bảng 4. SQLColumns[] SQLSTATE SQLSTATEMô tảGiải thích08S01 Lỗi liên kết giao tiếp. Liên kết giao tiếp giữa ứng dụng và nguồn dữ liệu không thành công trước khi chức năng hoàn tất. 24000 Trạng thái con trỏ không hợp lệ. Con trỏ đang mở trên bộ điều khiển câu lệnh. HY001 Lỗi cấp phát bộ nhớ. Db2 ODBC không thể phân bổ bộ nhớ cần thiết để hỗ trợ thực thi hoặc hoàn thành chức năng. HY010 Lỗi chuỗi hàm.

Hàm được gọi trong quá trình thực thi dữ liệu. [Nghĩa là, hàm được gọi trong một thủ tục sử dụng các hàm SQLColumns[]1 hoặc SQLColumns[]2. ]

HY014 Không còn tay cầm nào nữa. Db2 ODBC không thể phân bổ xử lý do tài nguyên nội bộ thấp. HY090 Độ dài bộ đệm hoặc chuỗi không hợp lệ. Giá trị của một trong các đối số độ dài tên nhỏ hơn 0 và không bằng SQL_NTS. HYC00 Trình điều khiển không hoạt động. Db2 ODBC không hỗ trợ "danh mục" làm từ hạn định cho tên bảng.

Ví dụ

Ví dụ sau đây cho thấy một ứng dụng truy vấn danh mục hệ thống để biết thông tin về các cột trong bảng. Hình 1. Một ứng dụng trả về thông tin về các cột của bảng

/* .. */
SQLRETURN
list_columns[SQLHDBC hdbc, SQLCHAR *schema, SQLCHAR *tablename ]
{
/* .. */
    rc = SQLColumns[hstmt, NULL, 0, schema, SQL_NTS,
                    tablename, SQL_NTS, "NTS];
    rc = SQLBindCol[hstmt, 4, SQL_C_CHAR, [SQLPOINTER] column_name.s, 129,
                    &column_name.ind];
    rc = SQLBindCol[hstmt, 6, SQL_C_CHAR, [SQLPOINTER] type_name.s, 129,
                    &type_name.ind];
    rc = SQLBindCol[hstmt, 7, SQL_C_LONG, [SQLPOINTER] &length,
                    sizeof[length], &length_ind];
    rc = SQLBindCol[hstmt, 9, SQL_C_SHORT, [SQLPOINTER] &scale,
                    sizeof[scale], &scale_ind];
    rc = SQLBindCol[hstmt, 12, SQL_C_CHAR, [SQLPOINTER] remarks.s, 129,
                    &remarks.ind];
    rc = SQLBindCol[hstmt, 11, SQL_C_SHORT, [SQLPOINTER] & nullable,
                    sizeof[nullable], &nullable_ind];
printf["Schema: 
    /* Fetch each row, and display */
    while [[rc = SQLFetch[hstmt]] == SQL_SUCCESS] {
        printf["   name.s];
        if [nullable == SQL_NULLABLE] {
            printf[", NULLABLE"];
        } else {
            printf[", NOT NULLABLE"];
        }
        printf[", name.s];
        if [length_ind != SQL_NULL_DATA] {
            printf[" [
        } else {
            printf["[\n"];
        }
        if [scale_ind != SQL_NULL_DATA] {
            printf[", 
        } else {
            printf["]\n"];
        }
    }                           /* endwhile */
/* .. */    

Làm cách nào để kiểm tra kiểu dữ liệu của cột trong Oracle SQL?

3 cách kiểm tra kiểu dữ liệu cột trong Oracle .
Lệnh MÔ TẢ. Lệnh MÔ TẢ liệt kê các định nghĩa cột của bảng hoặc dạng xem. .
Chế độ xem ALL_TAB_COLUMNS. Một cách khác để lấy kiểu dữ liệu của cột là truy vấn chế độ xem ALL_TAB_COLUMNS. .
Chế độ xem ALL_TAB_COLS. Một cách khác để làm điều đó là với chế độ xem ALL_TAB_COLS

Các loại cột trong SQL là gì?

Trong MySQL có 3 kiểu dữ liệu chính. chuỗi, số, ngày giờ .

Chủ Đề