Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menjalankan prosedur tersimpan di Oracle yang berisi dua pernyataan penyisipan?

Seperti yang dikatakan kesalahan, Anda memberikan nomor atau jenis parameter yang salah.

Saya sangat merekomendasikan menggunakan sintaks parameter bernama jika Anda mencoba memanggil prosedur dengan banyak parameter ini. Jika tidak, manusia cenderung mengalami kesulitan memperhatikan ketika mereka menghilangkan parameter atau meneruskan parameter dalam urutan yang salah jika mereka mencoba mencari tahu apa yang mereka lewati untuk parameter ke-20 ke suatu prosedur. Secara pribadi, saya cenderung melakukan refactor prosedur jauh sebelum saya mencoba memasukkan 20 parameter. Sesuatu yang sederhana seperti mengirimkan satu atau dua jenis rekaman mungkin membuat kode lebih mudah dibaca dan dipahami.

Saya telah mengubah panggilan Anda untuk menggunakan parameter bernama dan menambahkan komentar untuk kesalahan yang Anda buat.

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. Cari jika nomor terkandung dalam ekspresi seperti:1-3,5,10-15,20

  2. Aplikasi OCCI lumpuh saat dijalankan dalam mode debug di Visual Studio 2005

  3. Akses/jet setara dengan decode Oracle

  4. Oracle XMLTable- mengambil kolom dari node induk

  5. Jalankan beberapa pernyataan sql hanya menggunakan eksekusi di TOAD