oracle提示缺失右括号,我这个语句有什么问题
且不说你那里都是问号,你问号前后也不用加括号啊select ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? from dual UNION ALL select ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? from dual UNION ALL select ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? from dual所有的括号去掉

ORACLE右括号缺失
deptno NUMBER(2) 因为这一行的错误,应该是:deptno NUMBER(2) references dept 或者 deptno NUMBER(2) references dept(deptno) 你仅写了foreign key,就不知道你想参考哪个表(主键)了还有另外一种写法,你将foreign key去掉,在最后一行的右括号前 constraint fk_emp_deptno foreign key (deptno) references dept(或者dept(deptno),这个deptno可以省略,因为一个表只能有一个主键)
CREATE TABLE emp( empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), mgr NUMBER(4), deptno NUMBER(2), FOREIGN KEY(deptno) REFERENCES user_dept(deptno), photo VARCHAR2(100), note CLOB, lockflag NUMBER(2) DEFAULT 1);emp表建外键要关联user_dept 表的主键,并且user_dept 表应该先存在。例如:CREATE TABLE emp( empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), mgr NUMBER(4), deptno NUMBER(2), FOREIGN KEY(deptno) REFERENCES user_dept(deptno), photo VARCHAR2(100), note CLOB, lockflag NUMBER(2) DEFAULT 1);create table user_dept(deptno number primary key,name varchar2(20),salary number(10,2),record varchar2(10),higher varchar(10)); 如果可以请采纳!

oracle提示缺少右括号
create table bookable( bookid number(4) not null,bookname varchar2(40),bookprice number(4,2)constraint ba_price_ck check (bookprice > 0) disable,constraint ba_id_pk primary key(bookid)); 两个约束之间少了一个逗号,有时候报缺少右括号,未必是真的少打了一个括号。

oracle里执行后总是出现缺失右括号的提示
--1、oracle的int类型是不需要标注大小的,所以int(4),变成int即可 --2、不能通过定义表时定义自增字段,不支持auto_increment,--可以通过创建sequence和trigger来实现字段id的自增功能create table student(id int not null ,name varchar(20),myclass varchar(20) ,score int default 0,primary key(id));2,--自动生成序列create sequence seq_studentminvalue 1maxvalue 999999999999999999999start with 1increment by 1nocache;3,--创建触发器create or replace trigger trg_student_seq_idbefore insert on studentfor each rowdeclare-- local variables herebeginif(:new.id is null or :new.id =0) thenbeginselect seq_student.nextval into :new.id from dual;end;end if; end trg_student_seq_id;
AUTO_INCREMENT是MYSQL的 自动递增的关键字。 你这个建表语句, 是 mysql数据库的, 使用了 mysql 特有的东西。拿到 Oracle 上面跑, 自然是不行的了。下面是 mysql 里面AUTO_INCREMENT的使用的例子:mysql> CREATE TABLE test_create_tab2 (-> id INTAUTO_INCREMENT,-> valVARCHAR(10),-> PRIMARY KEY (id)-> );Query OK, 0 rows affected (0.09 sec)mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');Query OK, 1 row affected (0.03 sec)mysql> select last_insert_id() as id;+----+| id |+----+|1 |+----+1 row in set (0.00 sec)mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');Query OK, 1 row affected (0.03 sec)mysql> select last_insert_id() as id;+----+| id |+----+|2 |+----+1 row in set (0.00 sec)mysql> select * from test_create_tab2;+----+---------+| id | val |+----+---------+|1 | NO id ||2 | NO id 2 |+----+---------+ 2 rows in set (0.00 sec)
---建表 create table student(id int not null,name varchar(20),myclass varchar(20) ,score int default 0,primary key(id))SELECT * FROM student;---建立序列CREATE SEQUENCE s_studentMINVALUE 1MAXVALUE 999999999999999999999999999INCREMENT BY 1NOCYCLENOORDERCACHE 10/---触发器CREATE OR REPLACE TRIGGER t_student before insert on student for each rowbegin select s_student.nextval into:new.id from dual;end t_student;/oracle建表能这样写吗?没有那几个关键字! oracle 里面没有auto_increment 另外 int 不能指定位数 ,如果想指定可以使用number(位数)。
你用的Oracle版本是12C?11G,10G我都用过,但是没这个关键字。Oracle自增列都是用序列的。可能是我用的少吧。
score int(3)后面有个逗号

oracle 数据库显示缺失右括号
4class num (2), 改为4class number(2),楼上说的关于char和varchar2的区别我再补充一下当此字段用作关联条件时:char的关联方式是全部关联varcahr2的关联方式是一位一位关联比如一个字段内容为boychar的关联就是"boy"三个字母一次性匹配关林varchar2就是先匹配b 符合再匹配o 最后匹配y但是varchar2是变长字符型,所以如果你的这个boy字段类型为char(10),依旧占用10个字节,如果是varchar2(10)则只会占用3个字节。 看楼主需要了,纯手打,求采纳
1、number,不是number; 2、char是可以用的,不过一般式你确认你定义的字段的长度和实际应用中的长度基本一致,可以提高效率。不过在这个场景中,你定义的是,一般是2、3、4个中文字,定义的话是4、6、8个字节,建议定义成varchar2,能够节约空间。
建表语句有问题,把num改成number即可。另外不建议用char和varchar,用varchar2类型吧。
第四行num改成number 不要括号
Oracle里没有num类型啊,把num改成number就行了

本文由 在线网速测试 整理编辑,转载请注明出处。