需要帮助使用 plsql 创建过程
Need help creating a procedure with 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目标11=]
错误(10,52): PL/SQL: ORA-00904: : 标识符无效
只是不要进入 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 ...
...
我需要创建一个程序来计算客户拥有多少辆汽车以及客户在所有这些汽车上花费了多少。我设法使 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目标11=]
错误(10,52): PL/SQL: ORA-00904: : 标识符无效
只是不要进入 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 ...
...