다음을 통해 공유


개체 계층 구조 구문(Transact-SQL)

sp_OAGetPropertysp_OASetProperty의 propertyname 매개 변수와 sp_OAMethod의 methodname 매개 변수는 MicrosoftVisual Basic의 개체 계층 구조 구문과 비슷한 구문을 지원합니다. 이 특수 구문을 사용할 때 이러한 매개 변수는 다음과 같은 일반적인 형식을 갖습니다.

구문

'TraversedObject.PropertyOrMethod'

인수

  • TraversedObject
    저장 프로시저에 지정된 objecttoken 아래의 계층 구조에 있는 OLE 개체입니다. 개체를 반환하는 일련의 컬렉션, 개체 속성, 메서드를 지정하려면 Visual Basic 구문을 사용합니다. 각 개체 지정자는 마침표(.)로 구분해야 합니다.

    각 항목은 컬렉션 이름일 수 있습니다. 컬렉션을 지정하려면

    Collection("item") 구문을 사용합니다.

    큰따옴표(")가 필요합니다. 컬렉션에 대한 Visual Basic의 느낌표(!) 구문은 지원되지 않습니다.

  • PropertyOrMethod
    TraversedObject 속성 또는 메서드 이름입니다.

    sp_OAGetProperty, sp_OASetProperty 또는 sp_OAMethod 매개 변수(sp_OAMethod 출력 매개 변수에 대한 지원 포함)를 사용하여 모든 인덱스 또는 메서드 매개 변수를 지정하려면 다음 구문을 사용하십시오.

    PropertyOrMethod

    sp_OAGetProperty, sp_OASetProperty 또는 sp_OAMethod의 모든 인덱스 및 메서드 매개 변수를 무시하기 위해 괄호 안에 모든 인덱스 및 메서드 매개 변수를 지정하려면 다음 구문을 사용합니다.

    PropertyOrMethod**(** [ ParameterName**:=** ] "parameter" [ , ... ] )

    큰따옴표(")가 필요합니다. 모든 명명된 매개 변수는 반드시 모든 위치 매개 변수가 지정된 후에 지정되어야 합니다.

주의

TraversedObject를 지정하지 않은 경우에는 PropertyOrMethod를 지정해야 합니다.

PropertyOrMethod를 지정하지 않으면 OLE 자동화 저장 프로시저에서 TraversedObject이 개체 토큰 출력 매개 변수로 반환됩니다. PropertyOrMethod를 지정하면 TraversedObject의 속성 또는 메서드가 호출되어 OLE 자동화 저장 프로시저에서 속성 값 또는 메서드 반환 값이 출력 매개 변수로 반환됩니다.

TraversedObject 목록의 항목이 OLE 개체를 반환하지 않으면 오류가 발생합니다.

Visual Basic OLE 개체 구문에 대한 자세한 내용은 Visual Basic 설명서를 참조하십시오.

HRESULT 반환 코드에 대한 자세한 내용은 sp_OACreate(Transact-SQL)를 참조하십시오.

다음은 SQL-DMO SQLServer 개체를 사용하는 개체 계층 구문의 예입니다.

-- Get the AdventureWorks Person.Address Table object.
EXEC @hr = sp_OAGetProperty @object,
   'Databases("AdventureWorks").Tables("Person.Address")',
   @table OUT

-- Get the Rows property of the AdventureWorks Person.Address table.
EXEC @hr = sp_OAGetProperty @object,
   'Databases("AdventureWorks").Tables("Person.Address").Rows',
   @rows OUT

-- Call the CheckTable method to validate the 
-- AdventureWorks Person.Address table.
EXEC @hr = sp_OAMethod @object,
   'Databases("AdventureWorks").Tables("Person.Address").CheckTable',
   @checkoutput OUT