다음을 통해 공유


매개 변수 값 설정

매개 변수 값을 설정하기 위해 애플리케이션은 매개 변수에 바인딩된 변수의 값을 설정하기만 하면 됩니다. 문이 실행되기 전에 설정되는 한 이 값을 설정할 때는 중요하지 않습니다. 애플리케이션은 변수를 바인딩하기 전이나 후에 값을 설정할 수 있으며 원하는 만큼 값을 변경할 수 있습니다. 문이 실행되면 드라이버는 변수의 현재 값을 검색하기만 하면 됩니다. 이는 준비된 문이 두 번 이상 실행될 때 특히 유용합니다. 애플리케이션은 문이 실행될 때마다 일부 또는 모든 변수에 대한 새 값을 설정합니다. 이에 대한 예제는 이 섹션의 앞부분에 있는 준비된 실행을 참조하세요.

SQLBindParameter 호출에서 길이/표시기 버퍼가 바인딩된 경우 문이 실행되기 전에 다음 값 중 하나로 설정해야 합니다.

  • 바인딩된 변수에 있는 데이터의 바이트 길이입니다. 드라이버는 변수가 문자 또는 이진(ValueType이 SQL_C_CHAR 또는 SQL_C_BINARY)인 경우에만 이 길이를 검사.

  • SQL_NTS. 데이터는 null로 끝나는 문자열입니다.

  • SQL_NULL_DATA. 데이터 값은 NULL이고 드라이버는 바인딩된 변수의 값을 무시합니다.

  • SQL_DATA_AT_EXEC 또는 SQL_LEN_DATA_AT_EXEC 매크로의 결과입니다. 매개 변수 값은 SQLPutData와 함께 전송됩니다. 자세한 내용은 이 섹션의 뒷부분에 있는 긴 데이터 보내기를 참조하세요.

다음 표에서는 바인딩된 변수의 값과 애플리케이션이 다양한 매개 변수 값에 대해 설정하는 길이/표시기 버퍼를 보여 있습니다.

매개 변수

value
매개 변수

(SQL)

데이터 형식
변수(C)

데이터 형식
의 값

바인딩된

변수
의 값

길이/표시기

buffer[d]
"ABC" SQL_CHAR SQL_C_CHAR ABC\0[a] SQL_NTS 또는 3
10 SQL_INTEGER SQL_C_SLONG 10 --
10 SQL_INTEGER SQL_C_CHAR 10\0[a] SQL_NTS 또는 2
오후 1시 SQL_TYPE_TIME SQL_C_TYPE_TIME 13,0,0[b] --
오후 1시 SQL_TYPE_TIME SQL_C_CHAR {t '13:00:00'}\0[a], [c] SQL_NTS 또는 14
NULL SQL_SMALLINT SQL_C_SSHORT -- SQL_NULL_DATA

[a] "\0"은 null 종료 문자를 나타냅니다. null 종료 문자는 길이/표시기 버퍼의 값이 SQL_NTS 경우에만 필요합니다.

[b] 이 목록의 숫자는 TIME_STRUCT 구조체의 필드에 저장된 숫자입니다.

[c] 문자열은 ODBC 날짜 이스케이프 절을 사용합니다. 자세한 내용은 날짜, 시간 및 타임스탬프 리터럴을 참조 하세요.

[d] 드라이버는 항상 이 값을 검사 SQL_NULL_DATA 같은 특수 값인지 확인해야 합니다.

실행 시 매개 변수 값을 사용하여 드라이버가 수행하는 일은 드라이버에 따라 다릅니다. 필요한 경우 드라이버는 바인딩된 변수의 C 데이터 형식 및 바이트 길이에서 매개 변수의 SQL 데이터 형식, 전체 자릿수 및 소수 자릿수로 값을 변환합니다. 대부분의 경우 드라이버는 데이터 원본에 값을 보냅니다. 경우에 따라 값을 텍스트로 서식을 지정하고 SQL 문에 삽입한 후 문을 데이터 원본으로 보냅니다.