db2 我不知道我的sql代码出了什么问题,我该怎么办?

zzlelutf  于 9个月前  发布在  DB2
关注(0)|答案(2)|浏览(175)

这是我的代码:

--#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测试脚本的输出。

g52tjvyc

g52tjvyc1#

您在Where子句中有一个错误-WHERE s.transNo = transNo尝试将其更改为WHERE s.transNo = p.transNo
由于transNo也存在于其他表中,SQL不知道您引用的是哪个表。

slsn1g29

slsn1g292#

如果要在查询中使用例程参数,并且其名称等于某个列名,则必须相应地限定它-通过例程名称。
试试这个:

WHERE s.transNo = DISPLAYTRANS.transNo

字符串

相关问题