Инструкция PL / SQL игнорируется в процедуре - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблема с созданием этой процедуры, она будет использоваться для печати модели счета для определенного номера счета. Это то, что я имею до сих пор, в настоящее время я просто пытаюсь заставить его работать, прежде чем делать визуальные вещи для счета. Дело в том, что я не могу понять, что заставляет его работать неправильно. Я также получаю сообщение об ошибке «Ключевое слово 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;

1 Ответ

0 голосов
/ 25 апреля 2018

Поскольку у вас есть несколько * ключевых слов INTO только для одного оператора SELECT.

Уменьшите его до один после записи всех столбцов в списке 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...