sp_OAMethod(Transact-SQL)
OLE 개체의 메서드를 호출합니다.
구문
sp_OAMethod objecttoken , methodname
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
인수
- objecttoken
이전에 sp_OACreate를 사용하여 만든 OLE 개체의 개체 토큰입니다.
- methodname
호출할 OLE 개체의 메서드 이름입니다.
returnvalue OUTPUT
OLE 개체 메서드의 반환 값입니다. 지정되는 경우 반드시 적절한 데이터 형식의 로컬 변수이어야 합니다.메서드가 하나의 값을 반환하는 경우, 로컬 변수에 메서드 값을 반환하는 returnvalue의 로컬 변수를 지정하거나 단일 열 단일 행의 결과 집합으로 클라이언트에게 메서드 값을 반환하는 returnvalue를 지정하지 마십시오.
메서드 반환 값이 OLE 개체이면 returnvalue는 반드시 int 데이터 형식의 로컬 변수이어야 합니다. 개체 토큰은 로컬 변수에 저장되면 다른 OLE 자동화 저장 프로시저에 사용할 수 있습니다.
메서드가 배열을 반환하는 경우, returnvalue가 지정되면 NULL로 설정됩니다.
다음 상황에서는 오류가 발생합니다.
- returnvalue는 지정되었으나 메서드가 값을 반환하지 않습니다.
- 메서드가 두 개 이상의 차원을 가진 배열을 반환합니다.
- 메서드가 배열을 출력 매개 변수로서 반환합니다.
[ @parametername**=** ] parameter[ OUTPUT ]
메서드 매개 변수입니다. 지정되는 경우, parameter는 반드시 적절한 데이터 형식의 값이어야 합니다.출력 매개 변수의 반환 값을 가져오려면 parameter는 반드시 적절한 데이터 형식의 로컬 변수이어야 하고 OUTPUT이 지정되어야 합니다. 상수 매개 변수가 지정되거나 OUTPUT이 지정되지 않으면 출력 매개 변수의 모든 반환 값은 무시됩니다.
parametername을 지정하는 경우에는 Microsoft Visual Basic 의 명명된 매개 변수의 이름이어야 합니다. **@**parametername은 Transact-SQL 로컬 변수가 아닙니다. @ 기호는 제거되며 parametername은 매개 변수 이름으로 OLE 개체에 전달됩니다. 모든 명명된 매개 변수는 반드시 모든 위치 매개 변수가 지정된 후에 지정되어야 합니다.
n
여러 매개 변수를 지정할 수 있음을 나타내는 자리 표시자입니다.[!참고] @parametername은 지정한 메서드의 일부이고 메서드를 통해 개체에 전달되므로 명명된 매개 변수가 될 수 있습니다. 이 저장 프로시저의 다른 매개 변수는 이름이 아니라 위치로 지정됩니다.
반환 코드 값
0 (성공) 또는 0이 아닌 수(실패)이며 OLE 자동화 개체가 반환한 HRESULT의 정수 값입니다.
HRESULT 반환 코드에 대한 자세한 내용은 OLE 자동화 반환 코드 및 오류 정보를 참조하십시오.
결과 집합
메서드 반환 값이 하나 또는 두 개의 차원을 가진 배열인 경우 배열은 결과 집합으로 클라이언트에 반환됩니다.
- 1차원 배열이 배열 안의 요소 수만큼의 열이 포함된 단일 행 결과 집합으로 클라이언트로 반환됩니다. 즉, 배열이 (열)로 반환됩니다.
- 2차원 배열이 배열의 첫 번째 차원에 있는 요소 수만큼의 열과 두 번째 차원에 있는 요소 수만큼의 행이 포함된 결과 집합으로 클라이언트로 반환됩니다. 즉, 배열이 (열, 행)으로 반환됩니다.
속성 반환 값 또는 메서드 반환 값이 배열인 경우에는 sp_OAGetProperty나 sp_OAMethod가 결과 집합을 클라이언트로 반환합니다. (메서드 출력 매개 변수는 배열이 될 수 없습니다) 이러한 프로시저는 배열의 모든 데이터 값을 검색하여 결과 집합의 각 열에 알맞은 SQL Server 데이터 형식과 데이터 길이를 결정합니다. 특정 열에 대해서는 이러한 프로시저에서 해당 열의 모든 데이터 값을 나타내기 위해 필요한 데이터 형식과 길이를 사용합니다.
하나의 열에 있는 모든 데이터 값이 같은 데이터 형식을 공유하는 경우에는 해당 데이터 형식이 전체 열에 대해 사용됩니다. 한 열의 데이터 값이 여러 다른 데이터 형식을 가질 경우 다음 표를 기준으로 전체 열의 데이터 형식을 선택합니다.
int | float | money | datetime | varchar | nvarchar | |
---|---|---|---|---|---|---|
int |
int |
float |
money |
varchar |
varchar |
nvarchar |
float |
float |
float |
money |
varchar |
varchar |
nvarchar |
money |
money |
money |
money |
varchar |
varchar |
nvarchar |
datetime |
varchar |
varchar |
varchar |
datetime |
varchar |
nvarchar |
varchar |
varchar |
varchar |
varchar |
varchar |
varchar |
nvarchar |
nvarchar |
nvarchar |
nvarchar |
nvarchar |
nvarchar |
nvarchar |
nvarchar |
주의
sp_OAMethod를 사용하여 속성 값을 구할 수도 있습니다.
사용 권한
sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.
예
1. 메서드 호출
다음 예에서는 이전에 만든 SQLServer 개체의 Connect
메서드를 호출하는 방법을 보여 줍니다.
EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server',
'my_login', 'my_password'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
2. 속성 가져오기
다음 예에서는 이전에 만든 SQLServer 개체의 HostName
속성을 가져온 후 로컬 변수에 저장합니다.
DECLARE @property varchar(255)
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
PRINT @property