DECLARE
VEN2_ID_VAR NUMBER := 124;
VEN2_ID NUMBER;
VEN2_NAME VARCHAR2(50);
INV2_ID NUMBER;
INV_TOTAL NUMBER(9,2);
INV_TOTAL_PAY NUMBER(9,2);
INV_BALANCE NUMBER (9,2);
INV_DATE DATE;
INV_DUE_DATE DATE;
BEGIN
SELECT VENDORS2.VENDOR_ID, VENDOR_NAME, INVOICE_ID, INVOICE_TOTAL, PAYMENT_TOTAL , BALANCE, INVOICE_DATE, INVOICE_DUE_DATE
INTO VEN2_ID, VEN2_NAME, INV2_ID, INV_TOTAL , INV_TOTAL_PAY, INV_BALANCE, INV_DATE, INV_DUE_DATE
FROM INVOICES2 INNER JOIN VENDORS2 ON VENDORS2.VENDOR_ID = INVOICES2.VENDOR_ID
WHERE VENDORS2.VENDOR_ID = VEN2_ID_VAR ;
DBMS_OUTPUT.PUT ('VENDOR ID: ' || VEN2_ID || ', ');
DBMS_OUTPUT.PUT ('VENDOR NAME: ' || VEN2_NAME || ', ');
DBMS_OUTPUT.PUT ('INVOICE ID: ' || INV2_ID || ', ');
DBMS_OUTPUT.PUT ('INVOICE TOTAL: ' || INV_TOTAL || ', ');
DBMS_OUTPUT.PUT ('INVOICE TOTAL PAYMENT: ' || INV_TOTAL_PAY || ', ');
DBMS_OUTPUT.PUT ('BALANCE DUE: ' || INV_BALANCE || ', ');
DBMS_OUTPUT.PUT('INVOICE DATE: ' || TO_CHAR(INV_DATE, 'MON DD,RRRR') || ', ');
DBMS_OUTPUT.PUT_line('INVOICE DUE DATE: ' || TO_CHAR(INV_DUE_DATE, 'MON DD,RRRR'));
END;
/
Это код, который я пытаюсь запустить в Oracle PL/SQL, но VEN2_ID_VAR NUMBER: = 124 имеет несколько строк в базе данных, так он говорит, не может принести более один ряд переписать запрос для получения более одной строки. Что я могу сделать?PL/SQL BLOCK в цикле
Вам нужно определить курсор и поместить заявление в курсоре. –