【问题标题】:How to use substitution variable in SQL to prompt user to enter customer name?如何在 SQL 中使用替换变量提示用户输入客户名称?
【发布时间】:2015-11-03 13:19:51
【问题描述】:

问题如下:

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


所以基本上我有 4 个表要加入,包括 Customers、Orders、Orderitems 和 Book。我想提示用户输入 Jack Lucas。并显示 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

我想知道我哪里做错了。请指教。提前谢谢你。

【问题讨论】:

  • “c.firstname = &firstname”是什么意思。 SQL 不接受这样的参数。如果你想定义一个参数,这样做:DECLARE @firstname varchar(20)
  • 看看这个question

标签: sql variables prompt substitution


【解决方案1】:

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

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'

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多