2017-11-02 8 views
1

SQL Server 코드를 Oracle로 변환하려고했으나 실패했습니다.SQL 서버 코드를 Oracle로 변환

다음은 SQL Server의 코드입니다. 누구든지 도와 줄 수 있습니까?

CREATE TABLE [dbo].[DimCustomer] 
(
    CustomerID INT IDENTITY(12,1) NOT NULL, 
    CustomerAccountID VARCHAR(20), 
    FirstName VARCHAR(50), 
    LastName VARCHAR(50), 
    FullName AS CONCAT(FirstName,' ',LastName), 
    ContactNumber VARCHAR(20), 
    EmailAddress VARCHAR(50), 
    MemberShipType VARCHAR(50), 
    MemberShipStartDatekey INT, 
    MemberShipExpiryDateKey INT, 

    CONSTRAINT pk_customer_id PRIMARY KEY (CustomerID) 
) 
+0

을 DDL은 SQL Server 2012 이상에서는 유효하지만 CONCAT 기능으로 인해 이전 버전에 대해서는 유효하지 않습니다. –

+0

이것은 코드 작성 서비스가 아닙니다. Oracle과 SQL Server에는 많은 차이점이 있습니다. 신원은 여기에서 페이지에서 뛰어 내리는 것입니다. 계산 열의 구문도 매우 다릅니다. –

+0

어떤 Oracle 버전입니까? 스타터 용 –

답변

1

(오라클 12C)처럼 간단 :

CREATE TABLE DimCustomer 
(
CustomerID INT GENERATED BY DEFAULT AS IDENTITY NOT NULL --IDENTITY 
,CustomerAccountID VARCHAR2(20)        --VARCHAR2 
,FirstName VARCHAR2(50) 
,LastName VARCHAR2(50) 
,FullName AS (FirstName || ' ' ||LastName)     --calculated column 
,ContactNumber VARCHAR2(20) 
,EmailAddress VARCHAR2(50) 
,MemberShipType VARCHAR2(50) 
,MemeberShipStartDatekey INT 
,MemberShipExpiryDateKey INT 
,CONSTRAINT pk_customer_id PRIMARY KEY (CustomerID)   --comma 
); 

순서 및 트리거를 사용하여 대체 : 당신의 question.Your에 버전 별 SQL 서버 태그를 추가

CREATE SEQUENCE DimCustomer_seq START WITH 12 INCREMENT BY 1; 

CREATE OR REPLACE TRIGGER DimCustomer_seq_tr 
BEFORE INSERT ON DimCustomer FOR EACH ROW 
BEGIN 
SELECT DimCustomer_seq.NEXTVAL INTO :NEW.CustomerID FROM DUAL; 
END; 
+1

모두 감사합니다! 그것은 해결되었습니다. –