Я хочу написать процедуру, которая берет номер счета-фактуры, а затем выводит информацию о клиенте, который купил этот конкретный продукт.
У меня есть процедура, которая отображает детали клиента, используя идентификационный номерв качестве параметра, и это прекрасно работает!
Я не знаю, как использовать номер счета для определения значения идентификатора для клиентской процедуры.
Использую Oracle, sql plus
Код:
Информация о клиенте:
SET SERVEROUTPUT ON;
CREATE OR REPLACE PROCEDURE custdets (in_number IN customers.c_ID%TYPE)
IS
CURSOR customer_cursor
IS
SELECT c_ID,
C_PH,
c_FName,
c_LName,
c_address1,
c_address2,
c_address3
FROM customers
WHERE in_number = c_id;
crow customer_cursor%ROWTYPE;
BEGIN
FOR crow IN customer_cursor
LOOP
DBMS_OUTPUT.PUT_LINE ('Customer Details');
DBMS_OUTPUT.PUT_LINE (
'CUST ID#: ' || crow.c_id || CHR (9) || 'PH: ' || crow.c_ph);
DBMS_OUTPUT.PUT_LINE (
'Customer Name: ' || crow.c_Fname || ',' || crow.c_Lname);
DBMS_OUTPUT.PUT_LINE (
'Address: '
|| crow.c_address1
|| ','
|| crow.c_address2
|| ','
|| crow.c_address3);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/
Текущий запрос:
CREATE OR REPLACE PROCEDURE SalePurchase(in_invoice IN sales_purchases.sp_invoice%TYPE)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('###########################################');
DBMS_OUTPUT.PUT_LINE('# P U R H A S E - S A L E - S U M M A R Y #');
DBMS_OUTPUT.PUT_LINE('# INVOICE NO: ' || in_invoice || ' #');
DBMS_OUTPUT.PUT_LINE(chr(13));
DBMS_OUTPUT.PUT_LINE('###########################################');
DBMS_OUTPUT.PUT_LINE(CHR(13));
DBMS_OUTPUT.PUT_LINE('############################################');
custdets();
end;
/
Заранее спасибо!
Редактировать:
Разработано, что, когда я помещаю идентификационный номер в процедуру, которую я хочу вызвать, например, custdets (4), он распечатывает клиента с идентификатором этого номера.Это независимо от того, сделали ли они покупку или нет.