【问题标题】:Need help creating a procedure with plsql需要帮助使用 plsql 创建过程
【发布时间】:2021-03-02 23:40:22
【问题描述】:

我需要创建一个程序来计算客户拥有的汽车数量以及客户在所有这些汽车上的花费。我设法让 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: : 无效标识符

【问题讨论】:

    标签: sql plsql oracle-sqldeveloper


    【解决方案1】:

    只是不要进入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 ...
    ...
    

    【讨论】:

    • 非常感谢!现在很有意义:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多