Hello again everyone. I am creating a function and getting an error when using it. None of function creation is covered in our books and I exhausted my online searching ability lol. Any advice/direction welcomed. Error is:
Error points to this line
Now for the whole code:
And how i call:
Code:
SQL Error: ORA-01722: invalid number
ORA-06512: at "JPOWELL12.CHARTER_CHARGE", line 33
01722. 00000 - "invalid number"
Code:
WHERE AIRCRAFT.AC_NUMBER = charge_ac;
Code:
create or replace
FUNCTION CHARTER_CHARGE
(
ac_num hartmar.aircraft.ac_number%TYPE
) RETURN VARCHAR2 AS
wait_hours NUMBER(3,1) :=0;
distance NUMBER(5,0) :=0;
charge_ac CHAR(25 byte) :='';
charge_mod CHAR(10 byte) :='';
charge NUMBER(6,2) :=0;
destin CHAR(3) :='';
landing NUMBER(7,2) :=0;
tie NUMBER(6,2) :=0;
charter_chg NUMBER(9,2) :=0;
BEGIN
SELECT CHAR_HOURS_WAIT
INTO wait_hours
FROM hartmar.charter
WHERE char_id = char_trip;
SELECT CHAR_DISTANCE
INTO distance
FROM hartmar.charter
WHERE char_id = char_trip;
SELECT AC_NUMBER
INTO charge_ac
FROM hartmar.charter
WHERE char_id = char_trip;
SELECT MOD_CODE
INTO charge_mod
FROM hartmar.aircraft
WHERE AIRCRAFT.AC_NUMBER = charge_ac;
SELECT MOD_CHG_MILE
INTO charge
FROM hartmar.model
WHERE charge = MOD_CODE;
SELECT DESTINATION
INTO destin
FROM hartmar.charter
WHERE char_id = char_trip;
SELECT LANDING_FEE
INTO landing
FROM jpowell12.airport
WHERE destin = DESTINATION;
SELECT TIE_DOWN_FEE
INTO tie
FROM jpowell12.airport
WHERE destin = DESTINATION;
IF (wait_hours > 0) THEN
charter_chg := (((destin * charge)+ landing + tie)*1.35);
RETURN charter_chg;
ELSE
charter_chg := (((destin * charge)+ landing)*1.35);
RETURN charter_chg;
END IF;
END CHARTER_CHARGE;
Code:
SELECT CHARTER_CHARGE(charter.char_trip) Charge
from hartmar.charter
where char_trip = 10001;