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

Как да подадете входен параметър в запомнена процедура, извикваща от един команден ред

С това, което сте показали, или трябва да избегнете скобите:

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

Или оградете командата си в двойни кавички:

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

И двата ще спрат обвивката да се опитва да интерпретира самата parathenses, което ще ви даде 'syntax error: '(' unexpected или подобна грешка. Това всъщност няма нищо общо с Oracle, това е просто начинът, по който работи интерпретаторът на обвивката, преди да стигне до прехвърлянето на ехото на низа към SQL*Plus.

Между другото, обикновено бих използвал heredoc за такива неща и избягвам да поставям идентификационните данни в командния ред, така че да не се виждат чрез ps; например:

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. Условно дефинирайте курсор

  2. актуализиране чрез for цикъл в plsql

  3. Spring JDBC BeanPropertyRowMapper да не ('Y','N') към булевите свойства на bean

  4. ляво външно съединение, където таблиците са от две различни системи от бази данни

  5. Грешка при използване на oracle.dataaccess.dll