2014-01-24 4 views
0

UI에서 SQL 코드를 통해 데이터베이스에 직접 액세스 할 수있는 프로젝트에서 작업합니다. 이 회사는 UI 페이지를 XML로 작성한 후 프레임 워크를 분석하여 FLEX 페이지를 생성합니다. 우리가 DB (오라클)에서 데이터를 원한다면 WPF로 할 수있는 것처럼 datacontext 객체로 databinding하는 대신 xml에 SQL 쿼리를 추가합니다. 우리가 어떤 논리를 추가하기를 원한다면, 뒤에 코드가 없다. 우리는 저장 프로 시저를 호출한다. 우리가 필요로하는 데이터를 얻은 후에 파서가 작업을 수행합니다.Oracle SQL에서 ANSI SQL 장단점으로 이동

새로운 요구 사항은 프레임 워크를 사용하고 SQL Server와 호환 될 새로운 제품을 만드는 것이며, (Oracle) SQL 쿼리를 ANSI SQL로 변환하기 시작하는 것입니다.

누군가가 내게 그 혜택을 알려주고 우리가 그 일을 직면하게 될 문제를 주로 제기 할 수 있습니까? 더 좋은 방법이 있다고 생각합니까? 참고 : 프레임 워크는 실제로 크기가 커서 많은 제품이 있으므로 관리자는 그냥 버리려고하지 않습니다. (시도했지만 .. :)

답변

0

SQL의 각 언어가 다릅니다. ANSI SQL을 사용할 수 있지만 a) 모든 ANSI SQL이 대부분의 DBMS에 의해 구현되지는 않으며 b) 대부분의 DBMS에는 구현에 따른 최적화가있는 경우가 있습니다.

그래서 ANSI SQL을 사용하지 마십시오. 항상 작동하지는 않으며 때로는 공급 업체의 비표준 구현을 활용하는 것보다 느리게 작동합니다.

특히 Oracle은 저장 프로 시저에서 REF_CURSOR를 반환하여 DataSet을 채우는 StoredProcedure가 필요합니다. SQL Server는 그렇지 않습니다. SP는 SP가 선택한 것을 리턴합니다. 반환 된 REF_CURSOR를 없애려면 SP를 변경해야합니다.

날짜 처리가 상당히 다릅니다. 오라클은 절을 where와 같은 날짜로 바꾸려면 to_date가 필요합니다. SQL Server는 문자열을 가져 와서 변환합니다. 등등. (나는 ANSI 표준이 무엇인지, 심지어 이것이 무엇인지 확실치 않습니다!) SQL을 변경하지 않으려면 to_date라는 SQL Server 작성 함수를 추가 할 수 있지만 SQL은 느려질 것입니다.

저장 프로 시저에 많은 PL/SQL이있는 경우 T-SQL로 변환하는 작업이 많습니다. 그들은 상당히 다릅니다.

행운을 빈다.

+1

그 모두에 동의하십시오. 매우 어려운 작업입니다. 그러나 ref_cursor 일에 나는 오라클 12c가이 문제를 피하고 SQL Server의 처리와 유사한 새로운 구문을 가지고 있다고 믿습니다. –

+0

사실, SQL Server에는 Oracle DB (PLSQL 및 all)를 SQL Server로 변환하는 합리적인 작업을 수행하는 SQL Server Migration Assistant (SSMA)라는 도구가 있습니다. 하지만 유지 보수가 가능하고 실행 가능한 코드를 얻으려면 여전히 손으로 많은 작업을 수행해야합니다. –