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 반환하는 경우 SQL_HANDLE_STMT HandleTypeStatementHandleHandle 사용하여 SQLGetDiagRec 호출하여 관련 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 SQLProcedureColumns 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. "(DM)" 표기법은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 섰습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | 오류 | 묘사 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
08S01 | 통신 링크 실패 | 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다. |
24000 | 커서 상태가 잘못되었습니다. | StatementHandle커서가 열려 있었지만 SQLFetch 또는 SQLFetchScroll 호출되지 않았습니다. |
40001 | Serialization 실패 | 다른 트랜잭션과의 리소스 교착 상태 때문에 트랜잭션이 롤백되었습니다. |
40003 | 문 완성을 알 수 없음 | 이 함수를 실행하는 동안 연결된 연결이 실패했으며 트랜잭션 상태를 확인할 수 없습니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼의 SQLError 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY008 | 작업이 취소됨 |
StatementHandle대해 비동기 처리를 사용하도록 설정했습니다. 함수가 호출되었고 실행을 완료하기 전에 함수가 호출되었고 실행을 완료하기 전에 다중 스레드 애플리케이션의 다른 스레드에서 |
HY009 | null 포인터를 잘못 사용했습니다. | SQL_ATTR_METADATA_ID 문 특성이 SQL_TRUE 설정되었고, CatalogName 인수가 null 포인터였고, SQL_CATALOG_NAME InfoType 카탈로그 이름이 지원되는 것을 반환합니다. (DM) SQL_ATTR_METADATA_ID 문 특성이 SQL_TRUE 설정되었으며 SchemaName, ProcName또는 ColumnName 인수가 null 포인터였습니다. |
HY010 | 함수 시퀀스 오류 | (DM) StatementHandle연결된 연결 핸들에 대해 비동기 실행 함수가 호출되었습니다. 이 비동기 함수는 SQLProcedureColumns 함수가 호출되었을 때 계속 실행되고 있었습니다. (DM) SQLExecute, SQLExecDirect또는 SQLMoreResultsStatementHandle 호출하고 SQL_PARAM_DATA_AVAILABLE 반환했습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다. (DM) StatementHandle 대해 비동기 실행 함수(이 함수가 아님)가 호출되었으며 이 함수가 호출되었을 때 계속 실행 중입니다. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations또는 SQLSetPosStatementHandle 호출하고 SQL_NEED_DATA 반환했습니다. 이 함수는 모든 실행 시 데이터 매개 변수 또는 열에 대한 데이터를 보내기 전에 호출되었습니다. |
HY090 | 잘못된 문자열 또는 버퍼 길이 | (DM) 이름 길이 인수 중 하나의 값이 0보다 작지만 SQL_NTS 같지 않았습니다. 이름 길이 인수 중 하나의 값이 해당 카탈로그, 스키마, 프로시저 또는 열 이름의 최대 길이 값을 초과했습니다. |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수참조하세요. |
HYC00 | 선택적 기능이 구현되지 않음 | 프로시저 카탈로그가 지정되었으며 드라이버 또는 데이터 원본은 카탈로그를 지원하지 않습니다. 프로시저 스키마가 지정되었으며 드라이버 또는 데이터 원본은 스키마를 지원하지 않습니다. 프로시저 스키마, 프로시저 이름 또는 열 이름에 대해 문자열 검색 패턴이 지정되었으며 데이터 원본은 하나 이상의 인수에 대한 검색 패턴을 지원하지 않습니다. SQL_ATTR_CONCURRENCY 및 SQL_ATTR_CURSOR_TYPE 문 특성의 현재 설정 조합은 드라이버 또는 데이터 원본에서 지원되지 않았습니다. SQL_ATTR_USE_BOOKMARKS 문 특성이 SQL_UB_VARIABLE 설정되었으며 SQL_ATTR_CURSOR_TYPE 문 특성은 드라이버가 책갈피를 지원하지 않는 커서 유형으로 설정되었습니다. |
HYT00 | 시간 제한 만료됨 | 데이터 원본이 결과 집합을 반환하기 전에 시간 제한 기간이 만료되었습니다. 제한 시간은 SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT 통해 설정됩니다. |
HYT01 | 연결 제한 시간이 만료되었습니다. | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) StatementHandle 연결된 드라이버는 이 함수를 지원하지 않습니다. |
IM017 | 비동기 알림 모드에서 폴링을 사용할 수 없습니다. | 알림 모델을 사용할 때마다 폴링이 비활성화됩니다. |
IM018 | SQLCompleteAsync 이 핸들에서 이전 비동기 작업을 완료하기 위해 호출되지 않았습니다. | 핸들의 이전 함수 호출이 SQL_STILL_EXECUTING 반환하고 알림 모드가 활성화된 경우 핸들에서 SQLCompleteAsync 호출하여 사후 처리를 수행하고 작업을 완료해야 합니다. |
코멘트
이 함수는 일반적으로 문 실행 전에 프로시저 매개 변수 및 프로시저에서 반환된 결과 집합 또는 집합을 구성하는 열에 대한 정보를 검색하는 데 사용됩니다(있는 경우). 자세한 내용은 프로시저참조하세요.
메모
SQLProcedureColumns 프로시저에서 사용되는 모든 열을 반환하지 않을 수 있습니다. 예를 들어 드라이버는 프로시저에서 사용하는 매개 변수에 대한 정보만 반환하고 생성되는 결과 집합의 열은 반환하지 않을 수 있습니다.
SchemaName, ProcName및 ColumnName 인수는 검색 패턴을 허용합니다. 유효한 검색 패턴에 대한 자세한 내용은 패턴 값 인수참조하세요.
메모
ODBC 카탈로그 함수의 일반 사용, 인수 및 반환된 데이터에 대한 자세한 내용은 카탈로그 함수참조하세요.
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 |
프로시저 _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 데이터 형식일 수 있습니다. 날짜/시간 및 간격 데이터 형식의 경우 이 열은 간결한 데이터 형식(예: 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: 데이터 형식의 열 크기, 10진수, 8진수 길이 전송 및 표시 크기 참조하세요. |
BUFFER_LENGTH(ODBC 2.0) | 9 | 정수 | SQL_C_DEFAULT 지정된 경우 SQLGetData 또는 SQLFetch 작업에서 전송되는 데이터의 길이(바이트)입니다. 숫자 데이터의 경우 이 크기는 데이터 원본에 저장된 데이터의 크기와 다를 수 있습니다. 자세한 내용은 부록 D: 데이터 형식의 열 크기, 10진수, 8진수 길이 전송 및 표시 크기참조하세요. |
DECIMAL_DIGITS(ODBC 2.0) | 10 | Smallint | 데이터 원본에 있는 프로시저 열의 10진수입니다. 소수 자릿수를 적용할 수 없는 데이터 형식에 대해 NULL이 반환됩니다. 10진수에 대한 자세한 내용은 부록 D: 데이터 형식의 열 크기, 10진수, 8진수 길이 전송 및 표시 크기참조하세요. |
NUM_PREC_RADIX(ODBC 2.0) | 11 | Smallint | 숫자 데이터 형식의 경우 10 또는 2입니다. 10이면 COLUMN_SIZE 값과 DECIMAL_DIGITS 열에 허용되는 소수 자릿수를 제공합니다. 예를 들어 DECIMAL(12,5) 열은 NUM_PREC_RADIX 10, COLUMN_SIZE 12, DECIMAL_DIGITS 5를 반환합니다. FLOAT 열은 NUM_PREC_RADIX 10, COLUMN_SIZE 15, NULL DECIMAL_DIGITS 반환할 수 있습니다. 2이면 COLUMN_SIZE 및 DECIMAL_DIGITS 값은 열에 허용되는 비트 수를 제공합니다. 예를 들어 FLOAT 열은 NUM_PREC_RADIX 2, COLUMN_SIZE 53, NULL DECIMAL_DIGITS 반환할 수 있습니다. NUM_PREC_RADIX 적용할 수 없는 데이터 형식에 대해 NULL이 반환됩니다. |
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_DESC_TYPE 필드에 나타나는 SQL 데이터 형식의 값입니다. 이 열은 datetime 및 간격 데이터 형식을 제외하고 DATA_TYPE 열과 동일합니다. datetime 및 interval 데이터 형식의 경우 결과 집합의 SQL_DATA_TYPE 필드는 SQL_INTERVAL 또는 SQL_DATETIME 반환하고, SQL_DATETIME_SUB 필드는 특정 간격 또는 날짜/시간 데이터 형식에 대한 하위 코드를 반환합니다. (부록 D: 데이터 형식참조하세요.) |
SQL_DATETIME_SUB(ODBC 3.0) | 16 | Smallint | datetime 및 간격 데이터 형식에 대한 하위 형식 코드입니다. 다른 데이터 형식의 경우 이 열은 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 허용을 알 수 없는 경우 길이가 0인 문자열을 반환합니다. ISO 규칙을 따라 Null 허용 여부를 확인합니다. ISO SQL 규격 DBMS는 빈 문자열을 반환할 수 없습니다. 이 열에 대해 반환되는 값은 NULLABLE 열에 대해 반환된 값과 다릅니다. (NULLABLE 열에 대한 설명을 참조하세요.) |
코드 예제
프로시저 호출참조하세요.
관련 함수
자세한 내용은 | 보다 |
---|---|
결과 집합의 열에 버퍼 바인딩 | SQLBindCol 함수 |
문 처리 취소 | SQLCancel 함수 |
단일 행 또는 데이터 블록을 정방향으로 가져오기 | SQLFetch 함수 |
데이터 블록을 가져오거나 결과 집합을 스크롤합니다. | SQLFetchScroll 함수 |
데이터 원본의 프로시저 목록 반환 | SQLProcedures 함수 |