比较来自世界各地的卖家的域名和 IT 服务价格

语法错误:没有表达式 /ORA-00936/

我有 2 桌子,
Facilities


Services

.


CREATE TABLE Facilities /
facility_id NUMBER/2/ NOT NULL,
facility_name VARCHAR2/20/ NOT NULL,
CONSTRAINT pk_facil_id PRIMARY KEY /facility_id/
/;

CREATE TABLE Services /
service_id NUMBER/2/ NOT NULL,
service_name VARCHAR/20/ NOT NULL,
service_facility NUMBER/2/ NOT NULL,
CONSTRAINT pk_serviceid PRIMARY KEY /service_id/
/;

ALTER TABLE Services
add CONSTRAINT fk_servicefacility FOREIGN KEY/service_facility/
REFERENCES Facilities/facility_id/;


如果我尝试在表格中输入记录 'Services' 通过以下方式:


INSERT INTO Services /service_id, service_name, service_facility/ 
SELECT 06, 'Rooms',
/SELECT facility_id, FROM Facilities WHERE facility_name = 'Hotel'/
FROM Dual;


我得到一个错误 "missing expression" 为了 3 的 7 运营商 insert. 缺少什么表达?
已邀请:

石油百科

赞同来自:

在一份声明中 SQL, 您发布的哪个逗号。 如果您运行运营商 SQL*Plus,, 他会表达一个表情 ORA-00936: missing 并将显示您在发生错误的情况下


SQL> ed
Wrote file afiedt.buf

1 INSERT INTO Services /service_id, service_name, service_facility/
2 SELECT 06, 'Rooms',
3 /SELECT facility_id, FROM Facilities WHERE facility_name = 'Boston'/
4* FROM Dual
SQL> /
/SELECT facility_id, FROM Facilities WHERE facility_name = 'Boston'/
*
ERROR at line 3:
ORA-00936: missing expression


如果删除逗号,则运营商的工作原理


SQL> ed
Wrote file afiedt.buf

1 INSERT INTO Services /service_id, service_name, service_facility/
2 SELECT 06, 'Rooms',
3 /SELECT facility_id FROM Facilities WHERE facility_name = 'Boston'/
4* FROM Dual
SQL> /

1 row created.


但请注意,我通常更喜欢斯蒂芬的语法,您可以选择
Facilities

, 不是
dual

用子查询 scalar.

八刀丁二

赞同来自:

您的指示应该是:


INSERT INTO 
Services
/
service_id,
service_name,
service_facility
/
SELECT
06,
'Rooms',
facility_id
FROM
Facilities
WHERE
facility_name = 'Hotel'


在其当前状态下,我提供的请求将为每个对象的数字添加服务条目,其中包含酒店名称。

然后添加到您的表格的连接 'Dual', 所以你得到了适量的插入量 / 收到了正确的资金。

要回复问题请先登录注册