출처 : http://blog.naver.com/openlive/110015874707 (원래 출처는 단순히 korea.internet.com으로만 되어 있어 알 수 없었다.)
<출처 : korea.internet.com>
지은이 : 최현진
Parameter 개체
Parameter 개체는 저장 프로시저 또는 질의에 사용된 단일 매개변수에 대한 모든 정보를 나타내며, Parameters 컬렉션에 포함되어 사용된다.
Parameter 개체의 컬렉션, 메서드 및 속성을 사용하여 다음과 같은 작업을 할 수 있다.
1. Name 속성을 사용하여 매개변수의 이름을 설정하거나 반환한다.
2. Value 속성을 사용하여 매개변수의 값을 설정하거나 반환한다.
3. Attributes 속성과 Direction, Precision, NumericScale, Size 및 Type 속성을 사용하여 매개변수의 특성을 설정하거나 반환한다.
4. AppendChunk 메서드를 사용하여 긴 이진 데이터 또는 문자 데이터를 매개 변수에 전달한다.
호출하려는 저장 프로시저나 질의에 대한 매개변수의 이름과 속성을 알고 있다면 CreateParameter 메서드를 사용하여 적절한 속성 설정 값에 따라 여러 개의 Parameter 개체를 작성하고 Append 메서드를 사용하여 이들 개체를 Parameters 컬렉션에 추가할 수 있다. 이렇게 하면 공급자로부터 매개변수에 대한 정보를 검색하기 위해 Parameters 컬렉션에서 Refresh 메서드를 호출하는 등의 리소스 집약적인 작업을 하지 않아도 매개 변수의 값을 설정하거나 반환할 수 있다.
Parameter 개체의 속성
속성 | 설명 | 기본 값 | 데이터 형식 |
Attributes | Parameter 개체의 특성을 나타낸다. (읽기/쓰기) | 0 | Long |
Direction | Parameter 개체가 입력 매개변수를 나타내는지, 출력 매개변수를 나타내는지, 양쪽 모두를 나타내는지 또는 매개변수가 저장 프로시저에서 반환되는 값인지의 여부를 나타낸다. (읽기/쓰기) | 1 | ParameterDirectionEnum |
Name | Parameter 개체의 이름을 나타낸다. (읽기/쓰기) | "" | String |
NumericScale | NumericScale 속성은 Parameter 개체의 숫자 값의 단위를 나타낸다. (읽기/쓰기) | 0 | Byte |
Precision | Parameter 개체의 숫자 값에 대한 정밀도를 나타낸다. (읽기/쓰기) | 0 | Byte |
Size | Parameter 개체의 최대 크기를 바이트나 문자 개수로 나타낸다. (읽기/쓰기) | 0 | Long |
Type | Parameter 개체의 데이터 형식을 나타낸다. (읽기/쓰기) | 0 | DataTypeEnum |
Value | Parameter 개체에 지정된 값을 나타낸다. | Type 속성에 따라 달라진다. | Variant |
Attribute 속성
Attribute 속성은 Parameter 개체에 대한 하나 이상의 특성을 나타내며, ParameterAttributesEnum 값 중에서 하나 이상 값들의 합일 수 있다.
속성 | 설명 |
adParamSigned | 디폴트 값. 매개변수에 부호 있는 값이 사용되었음을 나타낸다. |
adParamNullable | 매개변수에 Null 값이 사용되었음을 나타낸다. |
adParamLong | 매개변수에 긴 이진 데이터가 사용되었음을 나타낸다. |
Direction 속성
Direction 속성은 Parameter 개체가 입력 매개변수를 나타내는지, 출력 매개변수를 나타내는지, 양쪽 모두를 나타내는지 또는 매개변수가 저장 프로시저에서 반환되는 값인지의 여부를 나타낸다.
이 속성은 다음과 같은 ParameterDirectionEnum 값 중 하나를 설정하거나 반환한다.
상수 | 값 | 설명 |
adParamUnknown | 0 | 매개변수의 Direction 속성을 알 수 없음을 나타낸다. |
adParamInput | 1 | 디폴트 값. 입력 매개변수를 나타낸다. |
adParamOutput | 2 | 출력 매개변수를 나타낸다. |
adParamInputOutput | 3 | 입력 매개변수와 출력 매개변수 모두를 나타낸다. |
adParamReturnValue | 4 | 반환 값을 나타낸다. |
Name 속성
Name 속성은 Parameter 개체의 이름을 나타낸다. 이 속성은 읽기와 쓰기가 모두 가능하며 String 값을 반환하거나 설정한다.
Parameters 컬렉션에 아직 추가되지 않은 Parameter 개체의 이 속성은 읽기/쓰기가 가능하며, Parameter 개체가 추가된 후에는 이 속성은 읽기 전용이다. Parameters 컬렉션 내의 개체들의 이름이 모두 고유한 이름을 가질 필요는 없다.
이 속성은 저장 프로시저 또는 질의에서 정의한 매개변수의 이름과 동일하지 않아도 상관없다. 하지만, 프로그램의 유지보수나 판독력을 높이기 위해 동일하게 작성하는 것을 권장한다.
NumericScale 속성
NumericScale 속성은 Parameter 개체의 숫자 값의 단위를 나타낸다. 이 속성은 Byte 값을 설정하거나 반환하며, 숫자 값이 들어갈 소수 자릿수를 나타낸다. 이 속성은 읽기와 쓰기가 가능하다.
NumericScale 속성을 사용하여 숫자로 된 Parameter 개체의 값을 나타낼 때 소수점 이하 몇 자리까지 사용할지를 결정한다.
Precision 속성
Precision 속성은 Parameter 개체의 숫자 값에 대한 정밀도를 나타낸다. 이 속성은 읽기와 쓰기가 가능하며, Byte 값을 설정하거나 반환한다.
이 속성을 사용하여 숫자로 된 Parameter 개체에 대한 값을 나타낼 때 사용할 최대 자릿수를 결정한다.
Size 속성
Size 속성은 Parameter 개체의 최대 크기를 바이트나 문자 개수로 나타내며, Long 값을 설정하거나 반환한다.
이 속성을 사용하여 Parameter 개체의 Value 속성에 기록될 최대값 또는 이 속성에서 읽을 최대값을 결정하며, 이 속성은 읽기와 쓰기가 모두 가능하다.
Parameter 개체에 대해 가변 길이 데이터 형식(예를 들어, adVarChar와 같은 String 형식)을 지정할 경우, Parameters 컬렉션에 개체를 추가하기 전에 먼저 개체의 Size 속성을 설정해야 하며 그렇지 않을 경우에는 오류가 발생한다.
adoPara.Type = adVarChar |
위와 같이 Size를 지정하지 않으면, 오류가 발생한다.
Command 개체의 Parameters 컬렉션에 이미 Parameter 개체를 추가한 상태에서 개체 형식을 가변 길이 데이터 형식으로 변경할 경우에는 Command 개체를 실행하기 전에 먼저 Parameter 개체의 Size 속성을 설정해야 하며 그렇지 않을 경우에도 오류가 발생한다.
공급자로부터 매개 변수 정보를 얻기 위해 Refresh 메서드를 사용하고 공급자가 하나 이상의 가변 길이 데이터 형식 Parameter 개체를 반환하는 경우, ADO는 이들 매개 변수의 최대 예상 크기에 따라 매개 변수에 메모리를 할당하게 되므로 실행 중 오류가 발생할 수 있다. 오류를 방지하려면 명령을 실행하기 전에 먼저 이들 매개 변수에 대한 Size 속성을 명시적으로 설정해야 한다.
Type 속성
Type 속성은 Parameter 개체의 데이터 형식을 나타내며, 읽기와 쓰기가 모두 가능하다.
이 속성은 다음과 같은 DataTypeEnum 값 중 하나를 설정하거나 반환한다. DataTypeEnum 값은 다음과 같다.
상수 | 값 | 설명 |
adBigInt | 20 | 8 바이트의 부호 있는 정수(DBTYPE_I8)를 나타낸다. |
adBinary | 128 | 이진 값(DBTYPE_BYTES)을 나타낸다. |
adBoolean | 11 | Boolean 값(DBTYPE_BOOL)을 나타낸다. |
adBSTR | 8 | Null 종결 문자열(유니코드)(DBTYPE_BSTR)을 나타낸다. |
adChapter | 136 | Child RowSet에서 Row를 식별하기 위해서 사용되는 4 바이트 Chapter 값(DBTYPE_HCHAPTER)을 나타낸다. |
adChar | 129 | String 값(DBTYPE_STR)을 나타낸다. |
adCurrency | 6 | Currency 값(DBTYPE_CY)을 나타낸다. Currency는 소수점 이하의 자릿수가 4개인 고정 자릿수이다. 이 값은 10,000으로 환산된 8바이트의 부호 있는 정수로 저장된다. |
adDate | 7 | Date 값(DBTYPE_DATE)을 나타낸다. 날짜는 Double 형식으로 저장되며, 정수 부분은 1899년 12월 30일 이후의 날짜수이며 소수 부분은 하루 중 시간을 나타낸다. |
adDBDate | 133 | 날짜 값(yyyymmdd)(DBTYPE_DBDATE)을 나타낸다. |
adDBFileTime | 137 | 파일-시간 값(DBTYPE_DBFILETIME)을 나타낸다. |
adDBTime | 134 | 시간 값(hhmmss)(DBTYPE_DBTIME)을 나타낸다. |
adDBTimeStamp | 135 | 날짜-시간 스탬프(yyyymmddhhmmss에 10억분의 1초 단위가 추가된)(DBTYPE_DBTIMESTAMP)를 나타낸다. |
adDecimal | 14 | 고정 정밀도와 크기로 나타낸 정확한 숫자 값(DBTYPE_DECIMAL)을 나타낸다. |
adDouble | 5 | 배정도의 부동 소수점 값(DBTYPE_R8)을 나타낸다. |
adEmpty | 0 | 지정된 값 없음(DBTYPE_EMPTY)을 나타낸다. |
adError | 10 | 32 비트 오류 코드(DBTYPE_ERROR)를 나타낸다. |
adFileTime | 64 | 1601년 1월 1일 이후의 1000만분의 1초 간격의 숫자를 표현하는 64 비트 값(DBTYPE_FILETIME)을 나타낸다. |
adGUID | 72 | 전역 고유 식별자(GUID)(DBTYPE_GUID)를 나타낸다. |
adIDispatch | 9 | OLE 개체에서 IDispatch 인터페이스에 대한 포인터(DBTYPE_IDISPATCH)를 나타낸다.참고 이 데이터 형식은 ADO에 의해서 현재는 지원되지 않는다. 이 데이터 형식의 사용은 예기치 않은 결과를 초래할 수 있다. |
adInteger | 3 | 4바이트의 부호 있는 정수(DBTYPE_I4)를 나타낸다. |
adIUnknown | 13 | OLE 개체에서 IUnknown 인터페이스에 대한 포인터(DBTYPE_IUNKNOWN)를 나타낸다.참고 이 데이터 형식은 ADO에 의해서 현재는 지원되지 않는다. 이 데이터 형식의 사용은 예기치 않은 결과를 초래할 수 있다. |
adLongVarBinary | 205 | Long 이진 값(Parameter 개체만 해당)을 나타낸다. |
adLongVarChar | 201 | Long String 값(Parameter 개체만 해당)을 나타낸다. |
adLongVarWChar | 203 | Long Null 종결 문자열 값(Parameter 개체만 해당)을 나타낸다. |
adNumeric | 131 | 고정 정밀도와 크기로 나타낸 정확한 숫자 값(DBTYPE_NUMERIC)을 나타낸다. |
adPropVariant | 138 | 자동화 PROPVARIANT(DBTYPE_PROP_VARIANT)를 나타낸다. |
adSingle | 4 | 단정도의 부동 소수점 값(DBTYPE_R4)을 나타낸다. |
adSmallInt | 2 | 2 바이트의 부호 있는 정수(DBTYPE_I2)를 나타낸다. |
adTinyInt | 16 | 1 바이트의 부호 있는 정수(DBTYPE_I1)를 나타낸다. |
adUnsignedBigInt | 21 | 8 바이트의 부호 없는 정수(DBTYPE_UI8)를 나타낸다. |
adUnsignedInt | 19 | 4 바이트의 부호 없는 정수(DBTYPE_UI4)를 나타낸다. |
adUnsignedSmallInt | 18 | 2 바이트의 부호 없는 정수(DBTYPE_UI2)를 나타낸다. |
adUnsignedTinyInt | 17 | 1 바이트의 부호 없는 정수(DBTYPE_UI1)를 나타낸다. |
adUserDefined | 132 | 사용자 정의 변수(DBTYPE_UDT)를 나타낸다. |
adVarBinary | 204 | 이진 값(Parameter 개체만 해당)을 나타낸다. |
adVarChar | 200 | String 값(Parameter 개체만 해당)을 나타낸다. |
adVariant | 12 | 자동화 Variant(DBTYPE_VARIANT)를 나타낸다. |
adVarNumeric | 139 | 숫자 값(Parameter 개체만 해당)을 나타낸다. |
adVarWChar | 202 | Null 종결 유니코드 문자열(Parameter 개체만 해당)을 나타낸다. |
adWChar | 130 | Null 종결 유니코드 문자열(DBTYPE_WSTR)을 나타낸다. |
다음 표는 SQL 서버의 데이터 형식과 액세스의 데이터 형식을 나열한 것이며, 빈 공간은 두 데이터 형식이 직접적으로 맵핑되지 않는 것을 의미한다.
SQL 서버 | 액세스 | Enum 값 |
binary | Binary | adVarBinary |
varbinary | adVarBinary | |
char | Text | adVarChar |
varchar | adVarChar | |
datetime | adDBTimeStamp | |
smalldatetime | adDBTimeStamp | |
float | Single | adSingle |
real | adSingle | |
int | Long Integer | adInteger |
smallint | Integer | adSmallInt |
tinyint | Byte | adUnsignedTinyInt |
Money | Currency | adCurrency |
smallmoney | adCurrency | |
bit | Yes/No | adBoolean |
timestamp | adVarBinary | |
text | Memo | adVarChar |
image | OLE Object | adVarBinary |
Double | adDouble | |
Date/Time | adDate | |
Replication ID | adGUID | |
Value | adEmpty |
데이터 형식을 지정할 때 실수하기 쉬운 부분은 SQL 서버의 datetime 형식은 adDate가 아니라 adDBTimeStamp로 지정해야 한다는 것이다.
Value 속성
Value 속성을 사용하여 매개 변수 값을 설정 또는 반환하며, Value 속성의 읽기/쓰기 또는 읽기 전용 여부를 결정하는 요소에는 여러 가지가 있다.
ADO에서는 Value 속성으로 Long 이진 데이터를 설정하고 반환할 수 있다.
참고
Parameter 개체에 대해 ADO는 Provider로부터 Value 속성을 한 번만 읽는다. Parameter 개체의 Value 속성이 비어 있고, Recordset 개체를 생성하는 Command 개체인 경우 Value 속성을 검색하기 전에 먼저 Recordset 개체를 닫아야 한다. 그렇게 하지 않으면 일부 Provider에 대해 Value 속성이 비어 있을 수 있으며 정확한 값을 포함하지 않게 된다.
Parameter 개체의 메서드
메서드 | 설명 |
AppendChunk | Parameter 개체에 데이터를 추가한다. |
Append 메서드
Append 메서드는 Parameter 개체에 데이터를 추가하는 메서드이며, 구문은 다음과 같다.
Parameter.AppendChunk Data
여기에서 Data는 Variant 형식으로 Parameter 개체에 추가할 데이터이다.
Parameter 개체의 Attributes 속성 중에 adFldLong 비트가 True로 설정되어 있으면 해당 매개 변수에 대하여 AppendChunk 메서드를 사용할 수 있다.
Parameter 개체에서 AppendChunk를 처음 호출하면 이 매개 변수에 데이터가 기록되며 기존 데이터를 겹쳐 쓴다. 그런 다음 Parameter 개체에서 AppendChunk를 다시 호출하면 기존의 매개 변수 데이터에 추가된다.
그리고 Null 값을 전달하는 AppendChunk를 호출하면 모든 매개 변수 데이터가 삭제된다.
'쓸만한 글' 카테고리의 다른 글
[스크랩] [트래블](2)실험여행-어디든…이렇게…나홀로…떠난다 (0) | 2007.08.16 |
---|---|
[스크랩] 디자인이 예술이 아닌 이유 (0) | 2007.08.09 |
ASP - Command객체를 사용해야 하는 이유 (0) | 2007.08.09 |
ASP - 날짜와 시간에 관한 함수 (0) | 2007.08.08 |
정규표현식 (0) | 2007.08.02 |