对 Oracle 数据库中不同模式中的表执行更新查询时显示无效标识符 SQL 错误
Invalid identifier SQL error displaying upon executing a update query for a tables in different schema in Oracle database
这里我使用的是 Oracle SQL 开发人员,我需要在另一个模式中更新 table。这是我写的更新查询。
update dcs.lte_pin_register set pin = ''
where dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
and dcs.subscriber.sub_number = '?';
在上面的查询中,
- dcs -> 引用数据库中的另一个模式
- lte_pin_register 和 subscriber 是 dcs 架构中的两个 table
- subscriber_seqno 和 sub_number 是各自 table 中的列。
然而,当我要使用有效的 sub_number 执行上述查询时,我收到一条错误消息。
Error report -
SQL Error: ORA-00904: "DCS"."SUBSCRIBER"."SUB_NUMBER": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
我可以使用 (tableName.columnName) 为更新查询调用同一架构中的列名。但是我如何修改上面的查询以引用不同模式中 tables 中的列?
你必须使用相关子查询来实现这个 -
UPDATE dcs.lte_pin_register
SET pin = ''
WHERE EXISTS (SELECT 1
FROM dcs.subscriber
WHERE dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
AND dcs.subscriber.sub_number = '?');
这里我使用的是 Oracle SQL 开发人员,我需要在另一个模式中更新 table。这是我写的更新查询。
update dcs.lte_pin_register set pin = ''
where dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
and dcs.subscriber.sub_number = '?';
在上面的查询中,
- dcs -> 引用数据库中的另一个模式
- lte_pin_register 和 subscriber 是 dcs 架构中的两个 table
- subscriber_seqno 和 sub_number 是各自 table 中的列。
然而,当我要使用有效的 sub_number 执行上述查询时,我收到一条错误消息。
Error report -
SQL Error: ORA-00904: "DCS"."SUBSCRIBER"."SUB_NUMBER": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
我可以使用 (tableName.columnName) 为更新查询调用同一架构中的列名。但是我如何修改上面的查询以引用不同模式中 tables 中的列?
你必须使用相关子查询来实现这个 -
UPDATE dcs.lte_pin_register
SET pin = ''
WHERE EXISTS (SELECT 1
FROM dcs.subscriber
WHERE dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
AND dcs.subscriber.sub_number = '?');