【问题标题】:PL/SQL Statement ignored in procedurePL/SQL 语句在过程中被忽略
【发布时间】:2018-04-25 00:44:01
【问题描述】:

我在创建此程序时遇到问题,它将用于打印特定发票编号的账单模型。这就是我到目前为止所拥有的,我目前只是想让它在为账单做视觉效果之前让它运行。问题是,我不知道是什么让它不能正常运行。我还收到“未在预期位置找到 FROM 关键字”错误。

set serveroutput on;

create or replace procedure facture_client (numfacture invoices.ino%type) IS

detail_ino detail.ino%type;
detail_qty detail.qty%type;
detail_price detail.price%type;
invoices_idate invoices.idate%type;
invoices_itotal invoices.itotal%type;
invoices_salesman invoices.salesman%type;
customer_cno customer.cno%type;
customer_address customer.address%type;
customer_city customer.city%type;
customer_state customer.state%type;
customer_zip customer.zip%type;
customer_phone customer.phone%type;
salesman_nom salesman.nom%type;

begin

select detail.ino into detail_ino, detail.qty into detail_qty, detail.price into detail_price, 
invoices.idate into invoices_idate, invoices.itotal into invoices_itotal, invoices.salesman into invoices_salesman,
customer.cno into customer_cno, customer.company into customer_company, customer.address into customer_address, customer.city into customer_city, 
customer.state into customer_state, customer.zip into customer_zip, customer.phone into customer_phone,
salesman.nom into salesman_nom
from detail
join invoices on detail.ino = invoices.ino
join customer on invoices.cno = customer.cno
join salesman on invoices.salesman = salesman.salesman
where detail.ino = numfacture;

end;

【问题讨论】:

    标签: sql oracle stored-procedures plsql


    【解决方案1】:

    因为您只有一个SELECT 语句有多个 INTO 关键字。

    SELECT 列表中写入所有列之后,将其缩减为一个,如下所示:

    select detail.ino, detail.qty, detail.price
           invoices.idate, invoices.itotal,
           invoices.salesman, customer.cno,
           customer.company , customer.address,
           customer.city, customer.state,
           customer.zip, customer.phone, salesman.nom  
      into detail_ino, detail_qty, detail_price,
           invoices_idate, invoices_itotal,
           invoices_salesman, customer_cno,
           customer_company, customer_address,
           customer_city, customer_state,
           customer_zip, customer_phone,salesman_nom
      from detail
      join invoices
        on detail.ino = invoices.ino
      join customer
        on invoices.cno = customer.cno
      join salesman
        on invoices.salesman = salesman.salesman
     where detail.ino = numfacture;
    

    甚至更好地与 别名表一起使用,如下所示:

    select d.ino, d.qty, d.price
           i.idate, i.itotal,
           i.salesman, c.cno,
           c.company , c.address,
           c.city, c.state,
           c.zip, c.phone, s.nom  
      into detail_ino, detail_qty, detail_price,
           invoices_idate, invoices_itotal,
           invoices_salesman, customer_cno,
           customer_company, customer_address,
           customer_city, customer_state,
           customer_zip, customer_phone,salesman_nom
      from detail d
      join invoices i
        on d.ino = i.ino
      join customer c
        on i.cno = c.cno
      join salesman s
        on i.salesman = s.salesman
     where d.ino = numfacture;
    

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多