2017-09-24 10 views
0

이 코드를 SQL Server에서 Oracle로 마이그레이션하려고하는데 많은 오류가 발생합니다. 누구든지 나를 도와 줄 수 있니? SQL Server의SQL Server 2008 R2에서 Oracle 11g로 테이블 변수 마이그레이션

코드 : 오라클의

DECLARE @tblFacultad TABLE 
(IdFacultad INT, 
    NomFacultad VARCHAR(200) 
); 

INSERT INTO @tblFacultad (IdFacultad, NomFacultad) 
    SELECT IdFacultad, NomFacultad 
    FROM FACULTAD_local 

SELECT * FROM @tblFacultad 

코드 : 나는 오라클의 코드를 실행하면

CREATE OR REPLACE TYPE objFacultad AS OBJECT 
(
    IdFacultad NUMBER, 
    NomFacultad varchar(255) 
) 

/
CREATE OR REPLACE TYPE tblFacultad is table of objFacultad; 

/
SELECT IDFACULTAD,NOMFACULTAD BULK COLLECT INTO tblFacultad FROM FACULTAD; 

, 나는이 오류를 얻을 :

ORA-03001: unimplemented feature
03001. 00000 - "unimplemented feature"
*Cause: This feature is not implemented.
*Action: None.
Error en la línea: 11, columna: 54

+0

[PL/SQL Developer] (https://www.allroundautomations.com/plsqldev.html)는 [SQL Developer]와 유사한 Oracle SQL 및 PL/SQL 작업을위한 데스크탑 도구입니다 (http : // www .oracle.com/technetwork/developer-tools/sql-developer/what-is-sqldev-093866.html) 또는 Toad. 나는 당신이 여기서 질문하는 것이 [Oracle SQL] (http://www.oracle.com/technetwork/database/database-technologies/sql/overview/index.html)이라고 생각합니다. –

답변

1

당신은 할 수 있습니다 ' Oracle SQL에서 이와 같은 테이블 변수를 정의하십시오. 콜렉션 유형을 정의하여 테이블 열 유형으로 사용하거나 PL/SQL 코드에서 유형으로 (보다 일반적으로) 사용할 수 있습니다. 예를 들어

create or replace type objfacultad as object 
(idfacultad number 
, nomfacultad varchar(255) 
) 
/

create or replace type tblfacultad is table of objfacultad; 
/

declare 
    demo_t tblfacultad; 
begin 
    select objfacultad(idfacultad,nomfacultad) bulk collect into demo_t 
    from (select 1 as idfacultad, 'F1' as nomfacultad from dual 
      union all 
      select 2 as idfacultad, 'F2' as nomfacultad from dual) facultad; 

    dbms_output.put_line('Array contains ' || demo_t.count || ' elements:'); 

    for r in (
     select f.idfacultad, f.nomfacultad 
     from table(demo_t) f 
    ) 
    loop 
     dbms_output.put_line(r.idfacultad || ' ' || r.nomfacultad); 
    end loop; 
end; 
/

출력 : create typeSQL 있으며 declare 시작 부분이 PL/SQL 블록임을

Array contains 2 elements: 
1 F1 
2 F2 

참고. 오라클과 협력 할 때 우리는 이러한 차이점을 인식해야합니다. PL/SQL Developer, Toad, 텍스트 편집기 등을 사용했는지 여부는 아무런 차이가 없습니다.