Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[DocWiki 번역] 메타데이터 질문과 답변 (FireDAC)


Recommended Posts

Docwiki에 있는 "Metadata Questions (FireDAC)"을 번역한 글: 번역일: 2022년 4월 18일

위로 가기: [DocWiki 번역] FAQ (FireDAC)

 

메타데이터(metadata) 추출  관련 질문과 답변을 정리한 목록이다.

Q1: 데이터베이스 안에 테이블(table)이 존재하는 지를 확인하는 방법은?

A: 기본 방식 2가지가 있다: 

1)

try
  FDQuery1.Open('select * from tab where 0 = 1');
  Result := True;
except
  on E: EFDDBEngineException do
    if E.Kind = ekObjNotExists then
      Result := False
    else
      raise;
end;

2)

var
  oList: TStrings;
begin
  oList := TStringList.Create;
  try
    FDConnection1.GetTableNames('', '', ATableName, oList, [osMy, osOther, osSystem],
      [tkTable, tkTempTable, tkLocalTable]);
    Result := oList.Count > 0;
  finally
    oList.Free;
  end;
end;

첫번째가 보다 최적화된 방식이다.

 

Q2: Oracle에서, TFDMetaInfoQuery를 사용하여 패키지 프로시저(package procedure)를 받아낼 수 있나?

A: 오라클 패키지인 PACKAGE_NAME의 프로시저(procedure) 목록을 반환하는 코드는 아래와 같다: 

FDMetaInfoQuery1.BaseObjectName := 'PACKAGE_NAME';
FDMetaInfoQuery1.MetaInfoKind := mkProcs;
FDMetaInfoQuery1.Open;

 

Q3: TFDMetaInfoQuery를 사용하여 인덱스(index) 이름을 얻는 방법은?

A: MY_TAB 테이블용 인덱스(index) 목록을 반환하는 코드는 아래와 같다: 

FDMetaInfoQuery1.ObjectName := 'MY_TAB';
FDMetaInfoQuery1.MetaInfoKind := mkIndexes;
FDMetaInfoQuery1.Open;

 

Q4: 쿼리 빌더(Query Builder), 디자인-타임 에디터, 메타데이터 추출 함수 등은 현재의 스키마(schema)에 속해 있는, 즉 스키마(schema)/카탈로그(catalog)에 해당 접두사가 달려있는 오브젝트 이름들을 반환한다. 제외하는 방법은?

 

A: 2가지 옵션이 있다:

  • TFDConnection.GetXxxxName을 호출할 때 AFullName에 False를 지정한다;
  • FireDAC에는 연결 정의(connection definition) 일반 파라미터가 2개 있다 - MetaCurCatalog와 MetaCurSchema이다. DBMS에 따라, 둘 중 하나 또는 둘 다 지원된다 (자세한 내용은 FireDAC Database Connectivity 참고). 만약 명시된 MetaDefCatalog 카탈로그(catalog)/MetaDefSchema 스키마(schema)에 속해 있는 오브젝트라면 오브젝트 이름에서 이 스키마(schema)/카탈로그(catalog)의 이름이 제외된다. 따라서 MetaDefCatalog/MetaDefSchema에 당신의 개발 스키마(schema)/카탈로그(catalog)의 이름을 지정하라. 그러면 애플리케이션을 다른 스키마(schema)/카탈로그(catalog)로 배포할 수 있다.

 

Q5: Oracle 저장 프로시저(stored procedure)를 public synonym을 이용하여 호출한다, 그러나 FireDAC이 항상 해당 저장 프로시저 이름에 스키마(schema) 이를을 덛붙인다. 피하는 방법은?

A: FireDAC에는 연결 정의(connection definition) 일반 파라미터가 2개 있다 - MetaCurCatalog와 MetaCurSchema이다. DBMS에 따라, 둘 중 하나 또는 둘 다 지원된다 (자세한 내용은 FireDAC Database Connectivity 참고). 여기에 '*'를 지정하면 오브젝트의 전체 이름 중 대응되는 이름 부분을 사용하지 않도록 할 수 있다.

이 댓글 링크
다른 사이트에 공유하기

  • Kori changed the title to [DocWiki 번역] 메타데이터 질문과 답변 (FireDAC)

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.