Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách chuyển tham số đầu vào trong lệnh gọi thủ tục được lưu trữ từ một dòng lệnh

Với những gì bạn đã hiển thị, bạn cần phải thoát khỏi dấu ngoặc đơn:

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

Hoặc đặt lệnh của bạn trong dấu ngoặc kép:

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

Một trong hai cách sẽ ngăn trình bao cố gắng thâm nhập vào chính các thông số, điều này sẽ cung cấp cho bạn một 'syntax error: '(' unexpected hoặc lỗi tương tự. Nó thực sự không liên quan gì đến Oracle, nó chỉ là cách trình thông dịch shell hoạt động, trước khi nó đi xa đến mức chuyển chuỗi được lặp lại sang SQL * Plus.

Ngẫu nhiên, tôi thường sử dụng heredoc cho loại việc này và tránh đặt thông tin đăng nhập trên dòng lệnh để chúng không hiển thị qua ps; ví dụ:

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. Làm cách nào để triển khai ứng dụng .NET sử dụng ODAC mà không cần cài đặt toàn bộ thành phần cho người dùng?

  2. Truyền một mảng chuỗi vào một thủ tục và sử dụng nó trong mệnh đề WHERE với IN

  3. Kết nối JDBC với cơ sở dữ liệu Oracle bằng Chứng chỉ TLS

  4. Oracle xử lý các lệnh gọi hàm được lưu trữ trong SQL như thế nào?

  5. Oracle hợp nhất các hằng số thành một bảng duy nhất