2011-02-24 111 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语句,看他们是否在意无错地创建表。那么你必须全部放弃。然后删除程序中的所有语句并进行测试。然后只添加一条语句并尝试。像那样尝试一次添加一条语句。你会看到哪一个错误。你可能需要解决这个问题。