2017-11-02 15 views
1

SQL ServerコードをOracleに変換しようとしましたが失敗しました。SQL ServerコードをOracleに変換する

ここはSQL Serverのコードです。誰も助けることができますか?

(オラクル部12c)のような単純な
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

あなたquestion.Yourにバージョン固有のSQL Serverのタグを追加DDLはSQL Server 2012以降では有効ですが、CONCAT機能により古いバージョンに対しては有効ではありません。 –

+0

これはコード作成サービスではありません。 OracleとSQL Serverには多くの違いがあります。アイデンティティはページからここにジャンプするものです。計算列の構文も非常に異なります。 –

+0

どのOracleのバージョンですか? –

答えて

1

:シーケンスとトリガーを使用して

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 
); 

オルタナティブ:

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

ありがとうございました!それは解決されました。 –

関連する問題