2017-04-06 55 views
0

有没有办法在where子句中获得currval? 我试图检查id = currval。我已经试过如下:在where子句中使用currval

insert into order values( 
orderid_seq.nextval, 
SYSDATE , 
&quantity, 
&student_number, 
&room_number, 
&menu_item , 
(select item_cost * order_quantity 
FROM order_stock,order 
WHERE order_stock.menu_item = 
order.menu_item and 
order_id = orderid_seq.currval 
)); 
+1

当你尝试过时发生了什么?你正在运行哪个数据库? – lit

回答

0

什么数据库这是?如果它是Oracle,并且orderid_seq是一个序列,则不可以在where子句中使用序列方法。

https://docs.oracle.com/database/121/SQLRF/pseudocolumns002.htm

+0

其SQL开发者 – Michael

+0

哪**数据库** ? Oracle有一个名为“SQL Developer”的桌面工具,所以我猜猜它是Oracle,但标签会有所帮助。 –

+0

对不起,它的oracle – Michael

0

您应该使用IN如果在orderid_seq.currval很多,正确的语法是:

select item_cost * order_quantity 
    FROM order_stock,order 
    WHERE order_stock.menu_item = 
    order.menu_item and 
    order_id IN (select order_id from orderid_seq.currval) 

更新

select item_cost * order_quantity 
    FROM order_stock,order 
    WHERE order_stock.menu_item = 
    order.menu_item and 
    order_id = (select order_id from Your_table where orderid_seq = 'currval') 
+0

因为orderid_seq.currval中有多个,我只需要它输入值就可以了当前order_id = currval – Michael

+0

查看我更新的@alex,并注意William Rovertson的回答 – LONG