在Oracle中创建一个具有列的默认值的表

时间:2016-07-03 07:06:13

标签: sql oracle syntax-error ddl create-table

当我运行此查询时:

Create table ACCT_MSTR 
("Acct_no" varchar2 (10) NOT NULL PRIMARY KEY,
 "SF_no" varchar2 (10),
 "LF_no" varchar2 (10),
 "Branch_no" varchar2 (10),
 "Intro_Cust_no" varchar2 (10),
 "Intro_Acct_no" varchar2 (10),
 "Intro_sign" varchar2 (1),
 "Type" Varchar2 (2),
 "Opr_mode" varchar2 (2),
 "Cust_accut_type" varchar2 (4),
 "Title" varchar2 (30),
 "Corp_Cust_no" varchar2 (10),
 "Aplndt" Date,
 "Opendt" Date,
 "Veri_Emp_no" VARCHAR2 (10),
 "Veri_sign" varchar2 (1),
 "Manager_sign" varchar2 (1),
 "Curbal" NUMBER(8,2),
 "Status" varchar2 (1) DEFAULT (A),
CONSTRAINT Am_Bn_fk FOREIGN KEY("Branch_no") references BRANCH_MSTR ("Branch_no"),
CONSTRAINT  Am_Icn_fk FOREIGN KEY("Intro_Cust_no") references CUST_MSTR ("Cust_no"),
CONSTRAINT  Am_Ian_fk FOREIGN KEY("Intro_Acct_no") references ACCT_MSTR ("Acct_no"),
CONSTRAINT Am_ccn_fk FOREIGN KEY("Corp_Cust_no") references CUST_MSTR ("Cust_no"),
CONSTRAINT  Am_ven_fk FOREIGN KEY("Veri_Emp_no") references EMP_MSTR ("Emp_no") 
);

我收到此错误:

  

SQL错误:ORA-00984:此处不允许列
    00984. 00000 - "栏目不允许在这里"

2 个答案:

答案 0 :(得分:2)

字符串常量需要用单个引号括起来。 没有引号的任何内容都是标识符。

所以<{p>}中的A

"Status" varchar2 (1) DEFAULT (A),

引用名为“A”的列。

你想要

"Status" varchar2 (1) DEFAULT ('A'),

答案 1 :(得分:1)

问题在于Convert.ToDateTime("2000/01/01 00:00:00").AddSeconds(count).ToString("HH:mm:ss"); 列的默认值。 SQL中的字符串常量用单引号("Status")表示。没有它们,裸字被解释为对象名称,在此上下文中不允许这样做。

简而言之,将引号添加到默认值,您应该没问题:

'