插入Oracle DB

时间:2015-11-13 17:53:02

标签: oracle plsql

我是PL / SQL数据库的新学习者,这是一种练习,用于在给定序列的apex.oracle.com上应用数据库。然后我创建了表,但是当使用插入代码填充表时,如下所示,应用程序出错,你介意我是否需要你的帮助

先谢谢,

CREATE TYPE TEMPORAL_VARCHAR AS OBJECT (

VALID_TIME_LOWER_BOUND DATE,

VALID_TIME_UPPER_BOUND DATE,

VALUE_PART VARCHAR2(50)
 );

CREATE TYPE TEMPORAL_NUMBER AS OBJECT (

VALID_TIME_LOWER_BOUND DATE,

VALID_TIME_UPPER_BOUND DATE,

VALUE_PART NUMBER );

与时间相关的属性已使用以下代码定义;

CREATE TYPE NAME_TYPE AS TABLE OF TEMPORAL_VARCHAR;

CREATE TYPE ADDRESS_TYPE AS TABLE OF TEMPORAL_VARCHAR;

CREATE TYPE DEPARTMENT_TYPE AS TABLE OF TEMPORAL_VARCHAR;

CREATE TYPE MANAGER_TYPE AS TABLE OF TEMPORAL_VARCHAR;

CREATE TYPE SALARY_TYPE AS TABLE OF TEMPORAL_NUMBER;

CREATE TABLE EMPLOYEE (
SSN NUMBER primary key,

 NAME NAME_TYPE,

 ADDRESS ADDRESS_TYPE ,

 BIRTH_DATE DATE,

MANAGER MANAGER_TYPE ,

 DEPARTMENT DEPARTMENT_TYPE,

 SALARY SALARY_TYPE

)

NESTED TABLE NAME STORE AS NAME_TABLE,

NESTED TABLE ADDRESS STORE AS ADDRESS_TABLE,

NESTED TABLE MANAGER STORE AS MANAGER_TABLE,

NESTED TABLE DEPARTMENT STORE AS DEPARTMENT_TABLE,

NESTED TABLE SALARY STORE AS SALARY_TABLE

;

我打算做的插入

INSERT INTO EMPLOYEE VALUES
(101,

NAME(TEMPORAL_VARCHAR('23.11.2005','12.31.9999','James Brown')),

ADDRESS(TEMPORAL_VARCHAR('23.11.2005','12.31.9999','BUCA, IZMIR')),

'23.10.1986',

MANAGER(TEMPORAL_VARCHAR('23.11.2005','12.31.9999','Mike White')),

DEPARTMENT(TEMPORAL_VARCHAR('23.11.2005','12.31.9999','DEPT_ID05')),

SALARY(TEMPORAL_NUMBER('23.11.2005',’12.31.9999’, 250000))
);

我收到的错误信息是:

ORA-00904:" SALARY":无效的标识符

2 个答案:

答案 0 :(得分:0)

_之前有空格

CREATE TYPE MANAGER _TYPE AS TABLE OF TEMPORAL_VARCHAR;

CREATE TYPE SALARY _TYPE AS TABLE OF TEMPORAL_NUMBER;

DEPARTMENT DEPARTMENT _TYPE

DEPARTMENT _TYPE

后缺少逗号

答案 1 :(得分:0)

试试这个解决方案:

'alter session set NLS_DATE_FORMAT='DD.MM.YYYY';'
----------------------------------------------------
INSERT INTO EMPLOYEE VALUES
(101,
NAME_TYPE(TEMPORAL_VARCHAR('23.10.1986','09.09.9999','James Brown')),
ADDRESS_TYPE(TEMPORAL_VARCHAR('15.12.2009','09.09.9999','BUCA')),
'23.10.1986',
MANAGER_TYPE(TEMPORAL_VARCHAR('24.05.2008','09.09.9999','Mike White')),
DEPARTMENT_TYPE(TEMPORAL_VARCHAR('03.01.2012','09.09.9999','DEPT_ID05')),
SALARY_TYPE(TEMPORAL_NUMBER('01.01.2003','09.09.9999', 3200))
);