Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да изпълня съхранена процедура в Oracle, която съдържа две инструкции за вмъкване?

Както се казва в грешката, вие подавате грешен номер или тип параметри.

Бих силно препоръчал да използвате синтаксис на именуван параметър, ако се опитвате да извикате процедура с толкова много параметри. В противен случай хората са склонни да изпитват трудности да забележат, когато пропускат параметър или подават параметри в грешен ред, ако се опитват да разберат какво предават за 20-ия параметър на процедура. Лично аз бих склонен да преработя процедура много преди да се опитам да предам 20 параметъра. Нещо толкова просто като предаването на един или два типа записи може да направи кода много по-лесен за четене и разбиране.

Промених вашето обаждане, за да използва именувани параметри и добавих коментари за местата, където сте допуснали грешки.

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
);    



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на Oracle и PHP:Работи в SQL Developer, но резултатите от PHP файл ORA-00900:Невалидно изявление

  2. Функция LPAD() в Oracle

  3. Топ 30 най-полезни заявки за едновременен мениджър

  4. Как да декларирате потребителско дефинирано изключение с помощта на променлива за изключение в базата данни на Oracle

  5. Вземете стойност между 2-ра и 3-та запетая