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

ORA-01036:незаконно име/номер на променлива при изпълнение на заявка през C#

Основната причина

В Oracle имате три вида SQL изрази (и освен това има PL/SQL блокове):

  • Изявления на езика за дефиниране на данни (DDL). Тези изрази променят структурата на базата данни. Те обикновено започват с глаголите "ALTER" или "CREATE"
  • Изявления в езика за промяна на данните (DML). Там операторите променят съдържанието вътре в таблиците, оставяйки структурата на всяка таблица непроменена. Тези изрази обикновено започват с „INSERT“, „MERGE“ или „DELETE“.
  • Изявления на това, което наричам „език на заявките“ (изглежда, че няма канонично име за тях). Тези изявления започват с глагола "SELECT".

Променливите за свързване в Oracle са разрешени само на някои специални места в DML и изрази за заявка. Опитвате се да използвате свързващи променливи на места, където те не са разрешени. Оттук и грешката.

Решение

Изградете своето изявление без обвързващи променливи. Създайте пълния низ на заявката, вместо да използвате конкатенация на низове.

Ако искате да дезинфекцирате входа, преди да конкатенирате низа, използвайте пакета DBMS_ASSERT.

Фон

Променливите за свързване могат да се използват само когато Oracle може да изгради план за заявка, без да знае стойността на променливата. За DDL изрази няма план за заявка. Следователно свързващите променливи не са разрешени.

В DML и изрази за заявка променливите за свързване са разрешени само когато се използват в кортеж (по отношение на основната теория на множеството), т.е. когато стойността ще бъде сравнена със стойността в таблица или когато стойността ще бъде вмъкната в таблица . Не им е разрешено да променят структурата на плана за изпълнение (например да променят целевата таблица или да променят броя на сравненията).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL вътрешно присъединяване при избрани изрази

  2. Грешка при свързване с локален хост на Java Oracle (ORA-12505)

  3. Как да извикате съхранена процедура в пакет оракул с Entity Framework?

  4. Дисплей на Oracle повече от 24 часа

  5. 12c Адаптивни планове