如何在SQL中使用替换变量来提示用户输入客户名称?

时间:2015-11-03 13:19:51

标签: sql variables prompt substitution

问题如下:

确定特定客户购买的图书。使用客户名称而不是客户编号执行搜索。使用替换变量并输入Jack Lucas作为客户名称。如果他购买了同一本书的多个副本,则不重复结果。

所以基本上我有4个表可以加入,包括Customers,Orders,Orderitems和Book。我想提示用户输入Jack Lucas。并显示杰克卢卡斯购买的书名结果。

SELECT b.title
FROM customers c
JOIN orders o
ON c.customerid = o.customerid
JOIN orderitems oi
ON o.orderno = oi.orderno
JOIN books b
ON oi.isbn = b.isbn
WHERE c.firstname = &firstname
AND c.firstname = 'JAKE';

我试图运行上面的代码,但在我输入' JAKE'后,它显示了我的错误,

  

ORA-00904:" JAKE":无效的标识符   00904. 00000 - "%s:无效标识符"   *原因:
  *行动:   行错误:9列:21

我想知道我做错了什么。请指教。提前谢谢。

1 个答案:

答案 0 :(得分:2)

'变量周围添加&单引号。

WHERE子句而不是两个条件检查同一列名AND,使用任何一个。所以下面的代码将起作用。

SELECT b.title
FROM customers c
JOIN orders o ON c.customerid = o.customerid
JOIN orderitems oi ON o.orderno = oi.orderno
JOIN books b ON oi.isbn = b.isbn
WHERE c.firstname = '&firstname'