다음을 통해 공유


WCF 서비스 모델을 사용하여 인터페이스 테이블 및 뷰에서 작업 삽입, 업데이트, 삭제 또는 선택

Oracle E-Business 어댑터는 인터페이스 테이블에서 기본 삽입, 선택, 업데이트 및 삭제 작업 집합을 검색합니다. 이러한 작업을 사용하면 대상 인터페이스 테이블의 WHERE 절로 한정된 간단한 Insert, Select, Update 및 Delete 문을 수행할 수 있습니다. 이 항목에서는 WCF 서비스 모델을 사용하여 이러한 작업을 수행하는 방법에 대한 지침을 제공합니다.

참고

Oracle E-Business 어댑터는 인터페이스 뷰에서 작업 선택만 지원합니다.

어댑터가 이러한 작업을 지원하는 방법에 대한 자세한 내용은 인터페이스 테이블 및 인터페이스 뷰에 대한 작업을 참조하세요.

이 항목에 사용된 예제 정보

이 항목의 예제에서는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블에서 작업을 수행합니다. 테이블은 샘플과 함께 제공되는 스크립트를 실행하여 만들어집니다. 샘플에 대한 자세한 내용은 Oracle EBS 어댑터에 대한 샘플을 참조하세요. 이 항목을 기반으로 하는 샘플 Interface_Table_Ops Oracle E-Business 어댑터 샘플도 제공됩니다.

WCF 클라이언트 클래스

Oracle E-Business 어댑터가 검색하는 기본 작업에 대해 생성된 WCF 클라이언트의 이름은 다음 표에 나열된 테이블 또는 뷰의 이름을 기반으로 합니다.

아티팩트 WCF 클라이언트 이름
인터페이스 테이블 InterfaceTables_[APP_NAME][SCHEMA]\[TABLE_NAME]Client
인터페이스 뷰 InterfaceViews_[APP_NAME][SCHEMA]\[VIEW_NAME]Client

[APP_NAME] = Oracle E-Business Suite 애플리케이션의 실제 이름입니다. 예를 들어 FND입니다.

[SCHEMA] = 아티팩트 컬렉션; 예를 들어 APPS입니다.

[TABLE_NAME] = 테이블의 이름입니다. 예를 들어 MS_SAMPLE_EMPLOYEE.

[VIEW_NAME] = 보기의 이름입니다. 예를 들어 MS_SAMPLE_EMPLOYEE_View.

테이블에서 작업을 호출하기 위한 메서드 서명

다음 표에서는 테이블의 기본 작업에 대한 메서드 서명을 보여 줍니다. 뷰 네임스페이스와 이름이 테이블의 네임스페이스를 대체한다는 점을 제외하고 보기의 서명은 동일합니다.

작업 메서드 시그니처
삽입 string Insert(InsertRecord[] RECORDSET);
선택 SelectRecord[] Select(string COLUMN_NAMES, string FILTER);
업데이트 string Update(UpdateRecord RECORDSET, string FILTER);
삭제 string Delete(string FILTER);

예를 들어 다음 코드는 기본 APPS 스키마 아래의 MS_SAMPLE_EMPLOYEE 인터페이스 테이블에서 삭제, 삽입, 선택 및 업데이트 작업에 대해 생성된 WCF 클라이언트 클래스에 대한 메서드 서명을 보여 줍니다.

public partial class InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient : System.ServiceModel.ClientBase<InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEE>, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEE {      
    public SelectRecord[] Select(string COLUMN_NAMES, string FILTER);  

    public string Insert(InsertRecord[] RECORDSET);  

    public string Update(UpdateRecord RECORDSET, string FILTER);  

    public string Delete(string FILTER);  
}  

이 코드 조각에서 InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient 어댑터 서비스 참조 플러그 인 추가에서 생성된 OracleEBSBindingClient.cs의 WCF 클래스 이름입니다.

테이블 작업에 대한 매개 변수

이 섹션에서는 각 테이블 작업에 필요한 매개 변수를 제공합니다.

작업 선택

COLUMN_NAMES FILTER
대상에 있는 열 이름의 쉼표로 구분된 목록입니다. 예를 들어 "EMP_NO, DESIGNATION"입니다. 열 목록은 결과 집합에서 반환되어야 하는 대상의 열을 지정합니다. 열 목록에 지정되지 않은 열은 반환된 레코드 집합의 .NET 기본값으로 설정됩니다. nillable 열의 경우 이 값은 null입니다. 쿼리의 대상 행을 지정하는 WHERE 절의 내용입니다. 예를 들어 "지정 = '관리자'"입니다. 이 매개 변수를 null 로 설정하여 대상의 모든 행을 반환할 수 있습니다.

Select 작업의 반환 값은 지정된 열과 행을 포함하는 강력한 형식의 결과 집합입니다.

삽입 작업

삽입 작업 유형 레코드 집합
여러 레코드 테이블에 삽입해야 하는 INSERTRECORDS 컬렉션입니다.

삽입 작업의 반환 값은 삽입된 행 수입니다.

업데이트 작업

레코드 집합 FILTER
테이블에서 업데이트해야 하는 레코드 컬렉션입니다. 쿼리의 대상 행을 지정하는 WHERE 절의 내용입니다. 예를 들어 "지정 = '관리자'"입니다. 이 매개 변수를 null 로 설정하여 대상의 모든 행을 반환할 수 있습니다.

업데이트 작업의 반환 값은 업데이트된 행 수입니다.

삭제 작업

삭제 작업은 삭제할 행을 지정하는 WHERE 절을 입력으로 사용합니다. 삭제 작업의 반환 값은 삭제된 행의 수입니다.

인터페이스 테이블 및 인터페이스 뷰에서 작업을 호출하는 WCF 클라이언트 만들기

WCF 클라이언트를 사용하여 Oracle E-Business Suite에서 작업을 수행하는 데 필요한 제네릭 작업 집합에는 Oracle E-Business Suite 어댑터를 사용한 WCF 채널 모델 개요에 설명된 작업 집합이 포함됩니다. 이 섹션에서는 인터페이스 테이블에서 기본 삽입, 선택, 업데이트, 삭제 작업을 호출하는 WCF 클라이언트를 만드는 방법을 설명합니다.

테이블에서 작업을 수행하는 WCF 클라이언트를 만들려면

  1. Visual Studio에서 Visual C# 프로젝트를 만듭니다. 이 항목의 경우 콘솔 애플리케이션을 만듭니다.

  2. MS_SAMPLE_EMPLOYEE 인터페이스 테이블에서 삽입, 선택, 업데이트 및 삭제 작업에 대한 WCF 클라이언트 클래스를 생성합니다. WCF 클라이언트 클래스를 생성하는 방법에 대한 자세한 내용은 Oracle E-Business Suite 솔루션 아티팩트용 WCF 클라이언트 또는 WCF 서비스 계약 생성을 참조하세요.

    중요

    WCF 클라이언트 클래스를 생성하기 전에 EnableBizTalkCompatibilityMode 바인딩 속성을 false로 설정해야 합니다.

  3. 솔루션 탐색기 및 Microsoft.ServiceModel.Channels에 대한 참조를 추가합니다Microsoft.Adapters.OracleEBS.

  4. Program.cs 파일을 열고 다음 네임스페이스를 추가합니다.

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. Program.cs 파일을 열고 아래 코드 조각에 설명된 대로 클라이언트를 만듭니다.

    OracleEBSBinding binding = new OracleEBSBinding();  
    EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name");  
    InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient client = new InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient(binding, address);  
    

    이 코드 조각 InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient 에서 은 OracleEBSBindingClient.cs에 정의된 WCF 클라이언트입니다. 이 파일은 어댑터 서비스 참조 추가 플러그 인에 의해 생성됩니다.

    참고

    이 코드 조각에서는 애플리케이션 코드에서 바인딩 및 엔드포인트 주소를 명시적으로 지정합니다. 어댑터 서비스 참조 플러그 인 추가에서 생성된 애플리케이션 구성 파일 app.config 이러한 값을 사용할 수 있습니다. 클라이언트 바인딩을 지정하는 다양한 방법에 대한 자세한 내용은 Oracle E-Business Suite에 대한 클라이언트 바인딩 구성을 참조하세요.

  6. 클라이언트에 대한 자격 증명을 설정합니다.

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. 인터페이스 테이블에서 작업을 수행하기 때문에 애플리케이션 컨텍스트를 설정해야 합니다. 이 예제에서는 애플리케이션 컨텍스트를 설정하기 위해 OracleUserName, OraclePasswordOracleEBSResponsibilityName 바인딩 속성을 지정합니다. 애플리케이션 컨텍스트에 대한 자세한 내용은 애플리케이션 컨텍스트 설정을 참조하세요.

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. 아래 코드 조각에 설명된 대로 클라이언트를 엽니다.

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. MS_SAMPLE_EMPLOYEE 테이블에서 삽입 작업을 호출합니다.

    Console.WriteLine("The application will insert a record in the MS_SAMPLE_EMPLOYEE interface table");  
    
    // The date values cannot contain time zone information. Hence, you must use  
    // DateTimeKind.Unspecified to not include the time zone information.  
    DateTime date = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);  
    
    string result;  
    
    InsertRecord[] recordSet = new InsertRecord[1];  
    
    EMP_NO__COMPLEX_TYPE emp_no = new EMP_NO__COMPLEX_TYPE();  
    emp_no.Value = "10007";  
    
    NAME__COMPLEX_TYPE name = new NAME__COMPLEX_TYPE();  
    name.Value = "John Smith";  
    
    DESIGNATION__COMPLEX_TYPE desig = new DESIGNATION__COMPLEX_TYPE();  
    desig.Value = "Manager";  
    
    SALARY__COMPLEX_TYPE salary = new SALARY__COMPLEX_TYPE();  
    salary.Value = "500000";  
    
    JOIN_DATE__COMPLEX_TYPE doj = new JOIN_DATE__COMPLEX_TYPE();  
    doj.Value = date;  
    
    recordSet[0] = new InsertRecord();  
    recordSet[0].EMP_NO = emp_no;  
    recordSet[0].NAME = name;  
    recordSet[0].DESIGNATION = desig;  
    recordSet[0].SALARY = salary;  
    recordSet[0].JOIN_DATE = doj;  
    
    try  
    {  
       result = client.Insert(recordSet);   
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
    Console.WriteLine("Number of records inserted= " + result);  
    Console.WriteLine("Press any key to continue...");  
    Console.ReadLine();  
    
    

    위의 코드 조각을 바꿔 선택, 업데이트 또는 삭제 작업도 수행할 수 있습니다. 코드 조각을 추가하여 단일 애플리케이션에서 모든 작업을 수행할 수도 있습니다. 이러한 작업을 수행하는 방법에 대한 코드 조각은 각각 작업 선택, 작업 업데이트삭제 작업을 참조하세요.

  10. 아래 코드 조각에 설명된 대로 클라이언트를 닫습니다.

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  11. 프로젝트를 빌드한 다음 실행합니다. 애플리케이션은 MS_SAMPLE_EMPLOYEE 테이블에 레코드를 삽입합니다.

작업 선택

다음 코드는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블을 대상으로 하는 Select 작업을 보여 줍니다. 선택 작업은 테이블에 삽입된 마지막 레코드를 선택합니다. 반환된 레코드는 콘솔에 기록됩니다.

Console.WriteLine("The application will now select the last inserted record");  
SelectRecord[] selectRecords;  
try  
{  
   selectRecords = client.Select("*", "WHERE EMP_NO LIKE 10007");  
}  
catch (Exception ex)  
{  
   Console.WriteLine("Exception: " + ex.Message);  
   throw;  
}  

Console.WriteLine("The details of the newly added employee are:");  
Console.WriteLine("********************************************");  
for (int i = 0; i < selectRecords.Length; i++)  
{  
   Console.WriteLine("Employee ID         : " + selectRecords[i].EMP_NO);  
   Console.WriteLine("Employee Name       : " + selectRecords[i].NAME);  
   Console.WriteLine("Employee Desigation : " + selectRecords[i].DESIGNATION);  
   Console.WriteLine("Employee Salary     : " + selectRecords[i].SALARY);  
   Console.WriteLine();  
}  
Console.WriteLine("********************************************");  
Console.WriteLine("Press any key to continue ...");  
Console.ReadLine();  

업데이트 작업

다음 코드는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블을 대상으로 하는 업데이트 작업을 보여 줍니다.

Console.WriteLine("The application will now update the employee name in the newly inserted record");  
string recordsUpdated;  
UpdateRecord updateRecordSet = new UpdateRecord();  
updateRecordSet.NAME = "Tom Smith";  
updateRecordSet.DESIGNATION = "Accountant";  

try  
{  
   recordsUpdated = client.Update(updateRecordSet, "WHERE EMP_NO LIKE 10007");  
}  
catch (Exception ex)  
{  
   Console.WriteLine("Exception: " + ex.Message);  
   throw;  
}  

Console.WriteLine("No of records updated: " + recordsUpdated);  
Console.WriteLine("Press any key to continue...");  
Console.ReadLine();  

삭제 작업

다음 코드는 MS_SAMPLE_EMPLOYEE 인터페이스 테이블을 대상으로 하는 삭제 작업을 보여 줍니다.

Console.WriteLine("The sample will now delete the record that it first inserted");  
string deletedRecords;  
try  
{  
   deletedRecords = client.Delete("WHERE EMP_NO LIKE 10007");  
}  
catch (Exception ex)  
{  
   Console.WriteLine("Exception: " + ex.Message);  
   throw;  
}  
Console.WriteLine("No of records deleted: " + deletedRecords);  
Console.WriteLine("Press any key to exit...");  
Console.ReadLine();  

참고 항목

WCF 서비스 모델을 사용하여 Oracle E-Business Suite 애플리케이션 개발