Zoals de fout aangeeft, geeft u het verkeerde aantal of type parameters door.
Ik raad ten zeerste aan om de syntaxis van de benoemde parameters te gebruiken als u een procedure met zoveel parameters probeert aan te roepen. Anders hebben mensen de neiging om moeite te hebben om op te merken wanneer ze een parameter weglaten of parameters in de verkeerde volgorde doorgeven als ze proberen te achterhalen wat ze voor de 20e parameter doorgeven aan een procedure. Persoonlijk zou ik de neiging hebben om een procedure te refactoren lang voordat ik 20 parameters probeerde door te geven. Iets eenvoudigs als het doorgeven van een of twee recordtypen kan de code veel gemakkelijker te lezen en te begrijpen maken.
Ik heb je oproep gewijzigd om benoemde parameters te gebruiken en opmerkingen toegevoegd over waar je fouten hebt gemaakt.
execute new_order(
p_order_id => 4, -- Pass in a number rather than using implicit conversion
p_order_num => 'O223PS562',
p_name => 'Test Test',
p_email => '[email protected]',
p_address => '123 Test Street',
p_city => 'Newcastle Upon Tyne',
p_province => 'Tyne and Wear',
p_postcode => 'NE98 4TN',
p_telephone => '123456789',
p_total => 7.97, -- Pass in a number rather than using implicit conversion
p_order_date => to_date('11-apr-2021', 'DD-mon-YYYY'), -- Pass in a date rather than using implicit conversion
p_order_item_id => 5, -- Pass in a number rather than using implicit conversion
p_product_id => 4, -- Pass in a number rather than using implicit conversion
p_seller_id => 2, -- Pass in a number rather than using implicit conversion
p_sub_order_number => 2, -- Pass in a number rather than using implicit conversion
p_quantity => 3073748221, -- Do you really want the quantity to be in the billions? That seems unlikely.
-- Perhaps there was supposed to be a phone number parameter
p_condition => '2', -- That doesn't look like a condition. Probably meant to be a unit price
p_unit_price => 'Brand new', -- Here we have a definite error. p_unit_price is a number but you can't connvert
-- the string 'Brand new' to a number. I assume that was really supposed to be the
-- condition
p_cost_charge => 1.99, -- Pass in a number rather than using implicit conversion
'2.00' -- And here we have a value being passed in but no equivalent parameter
);