这是我的代码:
--#SET TERMINATOR @
CREATE PROCEDURE DISPLAYTRANS (IN transNo VARCHAR(8))
DYNAMIC RESULT SETS 1
BEGIN
BEGIN
DECLARE c1 CURSOR WITH RETURN FOR
SELECT s.transNo, s.salesDate, p.prodCode, p.description, p.unit, sd.quantity
FROM sales s
LEFT JOIN salesdetail sd ON s.transNo = sd.transNo
LEFT JOIN product p ON sd.prodCode = p.prodCode
WHERE s.transNo = transNo
ORDER BY 1;
OPEN c1;
END;
END@
--#SET TERMINATOR ;
字符串
我遇到了这个错误:
对列“TRANSNO”的引用不明确。. SQLCODE=-203,SQLSTATE=42702,DRIVER=4.32.28
我正在使用db2执行以下任务:制定一个存储过程DISPLAYTRANS(),它将根据传递的事务号显示相应的销售事务。显示事务号、销售日期、产品代码、描述、单位、数量。使用TR 000039测试脚本的输出。
2条答案
按热度按时间g52tjvyc1#
您在Where子句中有一个错误-
WHERE s.transNo = transNo
尝试将其更改为WHERE s.transNo = p.transNo
由于transNo也存在于其他表中,SQL不知道您引用的是哪个表。
slsn1g292#
如果要在查询中使用例程参数,并且其名称等于某个列名,则必须相应地限定它-通过例程名称。
试试这个:
字符串