2012-04-18 2 views
2

비슷한 정보를 수집하기 위해 여러 데이터베이스를 사용하는 응용 프로그램이 있습니다. 필자는 응용 프로그램 계층에서 내 퍼시스턴스 계층을 효과적으로 추상화하는 ODBC 인터페이스를 통해이 작업을 수행합니다.ODBC 공용 언어 참조?

가 여기에 일이 : 나는보다 약간 더 구체적인 질문이 할

SELECT * FROM [TableName] 

지금까지 당신이 좀 더 구체적인 얻을 시작할 때 나는 있지만,이 모든 ODBC 데이터베이스 작동 말할 수있는, 구문 및 언어 사용이 더욱 문제가됩니다. MySQL에서 작동하는 쿼리는 반드시 MSSQL에서 작동하지는 않습니다. 오라클에 대해 잘 실행되는 쿼리는 PostgreSQL과 비교할 때 그렇게 좋지 않습니다.

ODBC는 추상화 계층이므로 모든 ODBC 호환 데이터베이스 시스템이 지원하는 언어 참조가 있어야한다고 생각합니다. 이러한 언어 구문을 사용하여 쿼리를 작성하는 경우 데이터베이스 시스템에 관계없이 유사한 결과를 얻을 것으로 예상됩니다.

맞습니까? 그런 표준이 있습니까? 그렇다면 언어 참조를 어디서 찾을 수 있습니까? 그에 따라 검색어를 작성할 수 있습니까? 내가 특히 관심이 있어요 것 같은 구조입니다 :

  • TOP (LIMIT)
  • MID (SUBSTR)
  • CAST (CONVERT)

등 당신의 도움을 주셔서 감사합니다!

+0

우리는 같은 상황에 처했을 때 아무 것도 발견하지 못했습니다. 가장 가까이에 올 수 있었던 것은 기본적인 쿼리 덤프를 수행하고 앱이 이상적인 것과는 거리가 먼 무거운 작업을 수행하는 것입니다. 한 가지 대안은 쿼리를 별도의 XML 파일에 포함시킨 다음 연결 클래스 집합을 사용하는 것이 었습니다. 그런 다음 쿼리와 연결을 호출 할 수 있으며 쿼리를 변경해야하는 경우 다시 컴파일하지 않고 xml 파일에서이 작업을 수행 할 수 있습니다. – Brian

+0

이것은 나를 슬프게합니다. ( –

+0

LINQ-To-SQL/Entities가 옵션입니까? LINQ에서 다루는 비슷한 질문은 다음과 같습니다. http://stackoverflow.com/questions/2938252/generic-sql-builder-net – mellamokb

답변

1

함수의 경우 ODBC 표준은 Appendix E: Scalar Functions입니다. 여기에는 하위 문자열이 포함됩니다. {fn func_name (arguments)} 구문을 사용해야합니다. SQL92의 캐스트 함수는 ODBC에서 변환됩니다 (예 : SQL92의 CAST (값 AS 유형))는 ODBC의 {fn CONVERT (value, type)}입니다. 그러나 Top은 함수가 아니라 데이터베이스가 지원할 수도 있고 지원하지 않을 수도있는 SQL 구문의 일부입니다 (예 : Oracle에는 맨 위에 없음).

+0

이것은 정답 인 듯하다. –

관련 문제