SQLProcedureColumns 函式
一致性
引進的版本:ODBC 1.0 標準合規性:ODBC
摘要
SQLProcedureColumns 會傳回輸入和輸出參數的清單,以及組成指定程式結果集的數據行。 驅動程式會將信息當做指定語句的結果集傳回。
語法
SQLRETURN SQLProcedureColumns(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * ProcName,
SQLSMALLINT NameLength3,
SQLCHAR * ColumnName,
SQLSMALLINT NameLength4);
參數
StatementHandle
[輸入]語句句柄。
CatalogName
[輸入]程式目錄名稱。 如果驅動程式支援某些程式的目錄,但不支援其他程式,例如當驅動程式從不同的 DBMS 擷取資料時,空字串串 (“”)表示沒有目錄的程式。
CatalogName 不能包含字串搜尋模式。
如果 SQL_ATTR_METADATA_ID 語句屬性設定為 SQL_TRUE,CatalogName 會視為標識符,而且其大小寫並不重要。 如果它是SQL_FALSE,CatalogName 是一般自變數;它會以字面方式處理,而且其大小寫很重要。 如需詳細資訊,請參閱目錄函式中的 自變數。
NameLength1
[輸入]*CatalogName的字元長度。
SchemaName
[輸入]程序架構名稱的字串搜尋模式。 如果驅動程式支援某些程序的架構,但不支援其他程式,例如當驅動程式從不同的 DBMS 擷取資料時,空字串串 (“”)表示沒有架構的程式。
如果 SQL_ATTR_METADATA_ID 語句屬性設定為 SQL_TRUE,SchemaName 會視為標識符,而且其大小寫並不重要。 如果它是SQL_FALSE,SchemaName 為模式值自變數;它會以字面方式處理,而且其大小寫很重要。
NameLength2
[輸入]*SchemaName字元的長度。
ProcName
[輸入]程式名稱的字串搜尋模式。
如果 SQL_ATTR_METADATA_ID 語句屬性設定為 SQL_TRUE,ProcName 會視為標識符,而且其大小寫並不重要。 如果它是SQL_FALSE,ProcName 是模式值自變數;它會以字面方式處理,而且其大小寫很重要。
NameLength3
[輸入]*ProcName的字元長度。
ColumnName
[輸入]數據行名稱的字串搜尋模式。
如果 SQL_ATTR_METADATA_ID 語句屬性設定為 SQL_TRUE,ColumnName 會視為標識符,而且其大小寫並不重要。 如果它是SQL_FALSE,ColumnName 是模式值自變數;它會以字面方式處理,而且其大小寫很重要。
NameLength4
[輸入]*ColumnName字元的長度。
返回
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_STILL_EXECUTING、SQL_ERROR或SQL_INVALID_HANDLE。
診斷
SQLProcedureColumns 傳回SQL_ERROR或SQL_SUCCESS_WITH_INFO時,可以呼叫 SQLGetDiagRec,並以 SQL_HANDLE_STMT HandleType 和 HandleStatementHandle來取得相關聯的 SQLSTATE 值。 下表列出 SQLProcedureColumns 通常傳回的 SQLSTATE 值,並說明此函式內容中的每個值:表示法 “(DM)” 在驅動程式管理員傳回的 SQLSTATE 描述之前。 除非另有說明,否則與每個 SQLSTATE 值相關聯的傳回碼會SQL_ERROR。
評論
在語句執行之前,通常會使用此函式來擷取程序參數的相關信息,以及組成程式所傳回結果集或集合的數據行,如果有的話。 如需詳細資訊,請參閱 程式。
注意
SQLProcedureColumns 可能不會傳回程式所使用的所有數據行。 例如,驅動程式可能只傳回程式所使用之參數的相關信息,而不是它所產生的結果集中的數據行。
SchemaName、ProcName和 ColumnName 自變數接受搜尋模式。 如需有效搜尋模式的詳細資訊,請參閱 Pattern Value Arguments。
注意
如需 ODBC 類別目錄函式的一般使用、自變數和傳回資料的詳細資訊,請參閱 Catalog Functions。
SQLProcedureColumns 會以標準結果集的形式傳回結果,依PROCEDURE_CAT、PROCEDURE_SCHEM、PROCEDURE_NAME和COLUMN_TYPE排序。 每個程式的數據行名稱會依下列順序傳回:傳回值的名稱、程式調用中每個參數的名稱(依呼叫順序),然後在程式傳回的結果集中每個數據行的名稱(依數據行順序)。
應用程式應該系結相對於結果集結尾的驅動程式特定數據行。 如需詳細資訊,請參閱 目錄函式傳回的數據。
若要判斷PROCEDURE_CAT、PROCEDURE_SCHEM、PROCEDURE_NAME和COLUMN_NAME數據行的實際長度,應用程式可以使用SQL_MAX_CATALOG_NAME_LEN、SQL_MAX_SCHEMA_NAME_LEN、SQL_MAX_PROCEDURE_NAME_LEN和SQL_MAX_COLUMN_NAME_LEN選項呼叫 SQLGetInfo。
下列數據行已針對 ODBC 3 重新命名。x。 數據行名稱變更不會影響回溯相容性,因為應用程式會依數據行編號系結。
ODBC 2.0 數據行 | ODBC 3.x 資料行 |
---|---|
PROCEDURE_QUALIFIER | PROCEDURE_CAT |
PROCEDURE _OWNER | PROCEDURE_SCHEM |
精度 | COLUMN_SIZE |
長度 | BUFFER_LENGTH |
規模 | DECIMAL_DIGITS |
基數 | NUM_PREC_RADIX |
下列數據行已新增至 ODBC 3 SQLProcedureColumns 所傳回的結果集。x:
COLUMN_DEF
DATETIME_CODE
CHAR_OCTET_LENGTH
ORDINAL_POSITION
IS_NULLABLE
下表列出結果集中的數據行。 驅動程式可以定義數據行 19 以外的其他數據行(IS_NULLABLE)。 應用程式應該從結果集結尾倒數,而不是指定明確的序數位置,以存取驅動程式特定的數據行。 如需詳細資訊,請參閱 目錄函式傳回的數據。
數據行名稱 | 欄號 | 數據類型 | 評論 |
---|---|---|---|
PROCEDURE_CAT (ODBC 2.0) | 1 | Varchar | 程序目錄名稱;如果不適用於數據源,則為 NULL。 如果驅動程式支援某些程式的目錄,但不支援其他程式,例如當驅動程式從不同的 DBMS 擷取資料時,它會針對沒有目錄的程式傳回空字串 (“”)。 |
PROCEDURE_SCHEM (ODBC 2.0) | 2 | Varchar | 程序架構名稱;如果不適用於數據源,則為 NULL。 如果驅動程式支援某些程序的架構,但不支援其他程式,例如當驅動程式從不同的 DBMS 擷取資料時,它會針對沒有架構的程式傳回空字串 (“”)。 |
PROCEDURE_NAME (ODBC 2.0) | 3 | Varchar not NULL | 程式名稱。 針對沒有名稱的程式,會傳回空字串。 |
COLUMN_NAME (ODBC 2.0) | 4 | Varchar not NULL | 程序數據行名稱。 驅動程式會針對沒有名稱的程序數據行傳回空字串。 |
COLUMN_TYPE (ODBC 2.0) | 5 | Smallint not NULL | 將程式資料列定義為參數或結果集資料列: SQL_PARAM_TYPE_UNKNOWN:程序數據行是類型未知的參數。 (ODBC 1.0) SQL_PARAM_INPUT:程序數據行是輸入參數。 (ODBC 1.0) SQL_PARAM_INPUT_OUTPUT:程序數據行是輸入/輸出參數。 (ODBC 1.0) SQL_PARAM_OUTPUT:程序數據行是輸出參數。 (ODBC 2.0) SQL_RETURN_VALUE:程序數據行是程序的傳回值。 (ODBC 2.0) SQL_RESULT_COL:程序數據行是結果集數據行。 (ODBC 1.0) |
DATA_TYPE (ODBC 2.0) | 6 | Smallint not NULL | SQL 數據類型。 這可以是 ODBC SQL 資料類型或驅動程式特定的 SQL 資料類型。 對於 datetime 和 interval 數據類型,此數據行會傳回精簡的數據類型(例如,SQL_TYPE_TIME或SQL_INTERVAL_YEAR_TO_MONTH)。 如需有效的 ODBC SQL 資料類型清單,請參閱附錄 D:數據類型中的 SQL 資料類型。 如需驅動程式特定SQL數據類型的相關信息,請參閱驅動程序的檔。 |
TYPE_NAME (ODBC 2.0) | 7 | Varchar not NULL | 數據源相依數據類型名稱;例如,“CHAR”、“VARCHAR”、“MONEY”、“LONG VARBINARY” 或 “CHAR ( ) FOR BIT DATA”。 |
COLUMN_SIZE (ODBC 2.0) | 8 | 整數 | 數據源上程式數據行的數據行大小。 如果數據行大小不適用,則會傳回NULL。 如需精確度的詳細資訊,請參閱附錄 D:數據類型中的 數據行大小、十進位數、傳輸八位長度和顯示大小。 |
BUFFER_LENGTH (ODBC 2.0) | 9 | 整數 | 如果指定SQL_C_DEFAULT,SQLGetData 或 SQLFetch 作業上傳輸的數據長度。 對於數值數據,此大小可能與儲存在數據源上的數據大小不同。 如需詳細資訊,請參閱附錄 D:數據類型中的 數據行大小、十進位數、傳輸八位長度和顯示大小。 |
DECIMAL_DIGITS (ODBC 2.0) | 10 | Smallint | 數據源上程序數據行的十進位數。 NULL 會針對不適用小數位數的數據類型傳回 NULL。 如需十進位數的詳細資訊,請參閱附錄 D:數據類型中的 數據行大小、十進位數、傳輸八位長度和顯示大小。 |
NUM_PREC_RADIX (ODBC 2.0) | 11 | Smallint | 如果是數值數據類型,則為10或2。 如果為 10,COLUMN_SIZE 和 DECIMAL_DIGITS中的值會提供數據行允許的小數位數。 例如,DECIMAL(12,5) 數據行會傳回 10 的NUM_PREC_RADIX、12 的COLUMN_SIZE,以及 5 的DECIMAL_DIGITS;FLOAT 數據行可以傳回 10 的NUM_PREC_RADIX、15 的COLUMN_SIZE,以及 NULL 的DECIMAL_DIGITS。 如果為 2,COLUMN_SIZE 和 DECIMAL_DIGITS中的值會提供數據行中允許的位數。 例如,FLOAT 數據行可以傳回 2 的NUM_PREC_RADIX、53 的COLUMN_SIZE,以及 NULL 的DECIMAL_DIGITS。 null 會針對不適用NUM_PREC_RADIX的數據類型傳回。 |
NULLABLE (ODBC 2.0) | 12 | Smallint not NULL | 程式資料列是否接受 NULL 值: SQL_NO_NULLS:程序數據行不接受 NULL 值。 SQL_NULLABLE:程序數據行接受NULL 值。 SQL_NULLABLE_UNKNOWN:目前還不清楚程序數據行是否接受 NULL 值。 |
備註 (ODBC 2.0) | 13 | Varchar | 程序數據行的描述。 |
COLUMN_DEF (ODBC 3.0) | 14 | Varchar | 數據行的預設值。 如果 NULL 指定為預設值,則此數據行是 NULL 一字,不會以引弧括住。 如果無法表示沒有截斷的預設值,則此數據行會包含 TRUNCATED,且沒有括住單引號。 如果未指定任何預設值,則此數據行為 NULL。 COLUMN_DEF的值可用於產生新的數據行定義,但包含TRUNCATED值時除外。 |
SQL_DATA_TYPE (ODBC 3.0) | 15 | Smallint not NULL | SQL 數據類型的值,因為它出現在描述元的SQL_DESC_TYPE欄位中。 此數據行與DATA_TYPE數據行相同,但 datetime 和 interval 數據類型除外。 對於 datetime 和 interval 數據類型,結果集中SQL_DATA_TYPE欄位會傳回SQL_INTERVAL或SQL_DATETIME,而SQL_DATETIME_SUB欄位會傳回特定間隔或 datetime 數據類型的子碼。 (請參閱 附錄 D:資料類型。) |
SQL_DATETIME_SUB (ODBC 3.0) | 16 | Smallint | datetime 和 interval 資料類型的子類型程式代碼。 對於其他數據類型,這個數據行會傳回NULL。 |
CHAR_OCTET_LENGTH (ODBC 3.0) | 17 | 整數 | 字元或二進位數據類型數據行的位元組長度上限。 對於所有其他數據類型,這個數據行會傳回NULL。 |
ORDINAL_POSITION (ODBC 3.0) | 18 | 整數不是 NULL | 針對輸入和輸出參數,參數在程式定義中的序數位置(以遞增參數順序,從 1 開始)。 針對傳回值(如果有的話),會傳回 0。 針對結果集數據行,數據行在結果集中的序數位置,結果集中的第一個數據行為數位 1。 如果有多個結果集,則會以驅動程式特定方式傳回數據行序數位置。 |
IS_NULLABLE (ODBC 3.0) | 19 | Varchar | 如果數據行不包含 NULL,則為 「NO」。。 如果數據行可以包含 NULL,則為 「YES」。。 如果 Null 屬性未知,此資料行會傳回長度為零的字串。 遵循 ISO 規則來判斷可為 Null 性。 符合 ISO SQL 標準的 DBMS 無法傳回空字串。 針對此數據行傳回的值與 NULLABLE 資料行所傳回的值不同。 (請參閱 NULLABLE 數據行的描述。 |
程式代碼範例
請參閱
相關函式
如需相關信息 | 看 |
---|---|
將緩衝區系結至結果集中的數據行 | SQLBindCol 函式 |
取消語句處理 | SQLCancel 函式 |
以正向方向擷取單一數據列或數據區塊 | SQLFetch 函式 |
擷取數據區塊或捲動結果集 | SQLFetchScroll 函式 |
傳回數據源中的程式清單 | SQLProcedures 函式 |