Reputation: 147
I am having an issue doing a plsql command. The idea is to show the courier, location, and yes or not if it is over 20.
DECLARE
yesnobool VARCHAR(3);
CURSOR orders_list IS
SELECT shipping.ship_courier,
shipping.weightpership,
shipping.shipping#,
purchaseorder.shipping#,
storelocation.location#,
STORELOCATION.LOC_CITY,
purchaseorder.location#
FROM shipping,
purchaseorder,
storelocation
WHERE purchaseorder.shipping# = shipping.shipping#
and storelocation.location# = purchaseorder.location#;
BEGIN
dbms_output.Put_line('Courier || Location || Too Heavy for 1 person lift?');
dbms_output.Put_line('------ -------- -----------------------------------');
FOR an_order IN orders_list LOOP
IF SHIPPING.WEIGHTPERSHIP > 20 THEN
yesnobool := 'YES';
ELSE
yesnobool := 'NO';
END IF;
dbms_output.Put_line(Rpad(an_order.ship_courier, 6) || ' ' ||
Rpad(an_order.loc_city, 8) || ' ' ||
Rpad(yesnobool, 19));
END LOOP;
END;
The Error message i am getting is:
Error report - ORA-06550: line 21, column 2: PLS-00402: alias required in SELECT list of cursor to avoid duplicate column names ORA-06550: line 21, column 2: PL/SQL: Statement ignored 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action:
Im not very good with plsql so i dont really know how to pin down the issue. Thank you in advance for any and all advice.
Upvotes: 3
Views: 27873
Reputation: 15865
Columns shipping#
and location#
are duplicated in your select field list.
shipping.shipping#
purchaseorder.shipping#
storelocation.location#,
purchaseorder.location#
The cursor is unable to distinguish which shipping or location its supposed to use.
The solution is to alias the fields. Something like this:
shipping.shipping# as shipping,
purchaseorder.shipping# as poshipping
And:
storelocation.location# as storeLocation,
purchaseorder.location# as poLocation
Upvotes: 4