sp_OAMethod(Transact-SQL)
적용 대상: SQL Server
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 Automation 저장 프로시저와 함께 사용할 수 있습니다.
메서드 반환 값이 배열인 경우 returnvalue가 지정된 경우 이 값은 .로 NULL
설정됩니다.
다음 중 하나가 발생하면 오류가 발생합니다.
- returnvalue 가 지정되었지만 메서드는 값을 반환하지 않습니다.
- 메서드는 두 개 이상의 차원을 가진 배열을 반환합니다.
- 이 메서드는 배열을 출력 매개 변수로 반환합니다.
[ @parametername = ] parameter [ OUTPUT ]
메서드 매개 변수입니다. 지정된 경우 매개 변수 는 적절한 데이터 형식의 값이어야 합니다.
출력 매개 변수의 반환 값을 가져오려면 매개 변수 가 적절한 데이터 형식의 지역 변수여야 하며 OUTPUT
지정해야 합니다. 상수 매개 변수를 지정하거나 지정하지 않은 경우 OUTPUT
출력 매개 변수의 반환 값은 무시됩니다.
지정한 경우 매개 변수 이름은 Microsoft Visual Basic 명명된 매개 변수의 이름이어야 합니다. @parametername Transact-SQL 지역 변수가 아닙니다. at sign(@
)이 제거되고 매개 변수 이름이 매개 변수 이름으로 OLE 개체에 전달됩니다. 모든 명명된 매개 변수는 반드시 모든 위치 매개 변수가 지정된 후에 지정되어야 합니다.
n
여러 매개 변수를 지정할 수 있음을 나타내는 자리 표시자입니다.
참고 항목
@parametername 지정된 메서드의 일부이며 개체로 전달되기 때문에 명명된 매개 변수가 될 수 있습니다. 이 저장 프로시저의 다른 매개 변수는 이름이 아닌 위치로 지정됩니다.
반환 코드 값
0
(success) 또는 OLE Automation 개체에서 반환된 HRESULT의 정수 값인 0이 아닌 숫자(실패)입니다.
HRESULT 반환 코드, OLE 자동화 반환 코드 및 오류 정보에 대한 자세한 내용을 보려면
결과 집합
메서드 반환 값이 하나 또는 두 개의 차원을 가진 배열인 경우 배열은 결과 집합으로 클라이언트에 반환됩니다.
1차원 배열은 배열에 있는 요소의 수만큼 많은 열이 포함된 단일 행 결과 집합으로 클라이언트에 반환됩니다. 즉, 배열이 (열)로 반환됩니다.
2차원 배열은 배열의 첫 번째 차원에 있는 요소 수만큼의 많은 열과 배열의 두 번째 차원에 있는 요소 수만큼의 많은 행이 포함된 결과 집합으로 클라이언트에 반환됩니다. 즉, 배열은 (열, 행)으로 반환됩니다.
속성 반환 값 또는 메서드 반환 값이 배열인 경우에는 sp_OAGetProperty
나 sp_OAMethod
가 결과 집합을 클라이언트에 반환합니다. (메서드 출력 매개 변수는 배열일 수 없습니다.) 이러한 절차는 배열의 모든 데이터 값을 검사하여 결과 집합의 각 열에 사용할 적절한 SQL Server 데이터 형식 및 데이터 길이를 확인합니다. 특정 열의 경우 이러한 프로시저는 해당 열의 모든 데이터 값을 나타내는 데 필요한 데이터 형식과 길이를 사용합니다.
하나의 열에 있는 모든 데이터 값이 같은 데이터 형식을 공유하는 경우에는 해당 데이터 형식이 전체 열에 대해 사용됩니다. 한 열의 데이터 값들이 여러 다른 데이터 형식을 가질 경우 전체 열의 데이터 형식이 다음 표를 기준으로 선택됩니다.
int | float | money | 날짜/시간 | 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 고정 서버 역할의 멤버 자격이 필요하거나 이 저장 프로시저에서 직접 권한을 실행해야 합니다. OLE 자동화와 관련된 시스템 프로시저를 사용하려면 Ole Automation Procedures 서버 구성 옵션을 사용하도록 설정해야 합니다.
예제
A. 메서드 호출
다음 예제에서는 이전에 만든 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;
B. 속성 가져오기
다음 예제에서는 이전에 만든 SQLServer
개체의 속성을 가져오 HostName
고 지역 변수에 저장합니다.
DECLARE @property VARCHAR(255);
EXEC @hr = sp_OAMethod @object,
'HostName',
@property OUTPUT;
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END;
PRINT @property;