2011-02-24 119 views
0

我在調用此包中的函數時錯過了右括號錯誤,請問您可以幫我嗎?Oracle快遞包缺少右括號

create or replace package body "GESTIONRH" is 

procedure CREATETABLES 
as 
begin 

    EXECUTE IMMEDIATE 'CREATE TABLE jobs 
    (job_id   VARCHAR2(10) 
    , job_title  VARCHAR2(35) 
    , min_salary  NUMBER(6) 
    , max_salary  NUMBER(6) 
    , constrataint pk_jobs primary key (job_id)) '; 

    EXECUTE IMMEDIATE 'Create table departments 
    (department_id NUMBER(4) 
    , department_name VARCHAR2(30) 
    , manager_id  NUMBER(6) 
    , location_id  NUMBER(4) 
    , constraint pk_dep primary key(department_id) ) '; 

    EXECUTE IMMEDIATE 'CREATE TABLE employees 
    (employee_id NUMBER(6) 
    , first_name  VARCHAR2(20) 
    , last_name  VARCHAR2(25) 
    , email   VARCHAR2(25) 
    , phone_number VARCHAR2(20) 
    , hire_date  DATE 
    , job_id   VARCHAR2(10) 
    , salary   NUMBER(8,2) 
    , commission_pct NUMBER(2,2) 
    , manager_id  NUMBER(6) 
    , department_id NUMBER(4) 
    , CONSTRAINT pk_employee primary key (employee_id)  )'; 

    EXECUTE IMMEDIATE 'CREATE TABLE job_history 
    (employee_id NUMBER(6) 
    , start_date DATE 
    , end_date  DATE 
    , job_id  VARCHAR2(10) 
    , department_id NUMBER(4) 
    , CONSTRAINT pk_job_history primary key (employee_id, start_date))'; 

    EXECUTE IMMEDIATE 'CREATE TABLE dependents 
    (Id NUMBER(6) 
    , FirstName  VARCHAR2(20) 
    , LastName  VARCHAR2(25) 
    , Birthdate Date 
    , Relation VARCHAR2(20) 
    , Gender VARCHAR2(2) 
    , RelativeId Number(6) 
    , CONSTRAINT pk_dependent primary key (Id))';   

end CREATETABLES; 

end GESTIONRH; 
+5

在動態SQL中創建表不是建議的做法... – 2011-02-24 18:38:22

回答

4

您在第一個EXECUTE語句中拼寫錯誤「約束」。

0

我沒有Oracle數據庫來測試這個。首先獨立執行create table語句,看他們是否在意無錯地創建表。那麼你必須全部放棄。然後刪除程序中的所有語句並進行測試。然後只添加一條語句並嘗試。像那樣嘗試一次添加一條語句。你會看到哪一個錯誤。你可能需要解決這個問題。