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

Bagaimana cara melewatkan parameter input dalam panggilan prosedur tersimpan dari baris perintah tunggal

Dengan apa yang telah Anda tunjukkan, Anda juga harus keluar dari tanda kurung:

echo execute some_procedure\(123,234\) | sqlplus username/[email protected]

Atau lampirkan perintah Anda dalam tanda kutip ganda:

echo "execute some_procedure(123,234)" | sqlplus username/[email protected]

Entah akan menghentikan Shell yang mencoba menafsirkan parathens itu sendiri, yang akan memberi Anda 'syntax error: '(' unexpected atau kesalahan serupa. Sebenarnya ini tidak ada hubungannya dengan Oracle, ini hanya cara kerja penerjemah shell, sebelum sampai pada pemipaan string yang digaungkan ke SQL*Plus.

Kebetulan, saya biasanya menggunakan heredoc untuk hal semacam ini, dan menghindari meletakkan kredensial pada baris perintah sehingga tidak terlihat melalui ps; misalnya:

sqlplus -s /nolog <<!EOF
connect username/[email protected]
execute some_procedure(123,234)
exit
!EOF



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan perbedaan pada kolom dan melakukan urutan pada kolom lain memberikan kesalahan

  2. Bisakah pemicu dikunci; bagaimana cara menentukannya?

  3. PLSQL:Dapatkan jumlah catatan yang diperbarui vs dimasukkan saat pernyataan gabungan digunakan

  4. BUAT rekayasa balik TABEL di Oracle

  5. oracle - menanyakan nilai NULL dalam kueri unpivot