首页 > 解决方案 > 需要帮助使用 plsql 创建过程

问题描述

我需要创建一个程序来计算客户拥有多少辆汽车以及客户在所有这些汽车上花了多少钱。我设法让 select 语句单独工作,但将它实施到过程中让我很难过。

CREATE OR REPLACE PROCEDURE getcars (
    v_customername     IN    saleinv.custname%TYPE
    , v_totalcars    OUT   NUMBER
    , v_moneyspent   OUT   NUMBER
) AS
BEGIN
    SELECT
    sale.custname
    , COUNT(sale.carserial)
    , round(SUM(sale.carsaleprice + serv.partscost + serv.laborcost), 2)
    INTO v_customername, v_totalcars, v_moneyspent
FROM
    saleinv   sale
    FULL OUTER JOIN servinv   serv ON sale.custname = serv.custname
    WHERE sale.custname = v_customername
GROUP BY
    sale.custname;
END;
/

以下是我得到的错误:

错误 (6,5): PL/SQL: SQL 语句被忽略

错误(10,10):PLS-00403:表达式“V_CUSTOMERNAME”不能用作 SELECT/FETCH 语句的 INTO 目标

错误(10,52):PL/SQL:ORA-00904::标识符无效

标签: sqlplsqloracle-sqldeveloper

解决方案


只是不要进入v_customername. 它是一个IN参数。并且sale.custname不能由于无论如何WHERE都要求的条款而与输入的值不同。sale.custname = v_customername

...
SELECT count(sale.carserial),
       round(sum(sale.carsaleprice + serv.partscost + serv.laborcost), 2)
       INTO v_totalcars,
            v_moneyspent
       FROM ...
...

推荐阅读