Запрос с использованием переменных подстановки Oracle - PullRequest
0 голосов
/ 03 мая 2018

У меня есть пример кода SQL, как показано ниже

select *
  from Engg_Studens
 where Student_Name = '&Student_Name'
   And Department = 'computer science & Engineering' ;

Мой вопрос здесь: во время работы SQL он запрашивает переменную подстановки для '& engineering', которая находится в названии отдела. Я должен только попросить '&student_name'.

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Вы можете избежать второго амперсанда (&), но, честно говоря, я никогда не помню, как это сделать с моей головы. Я обычно делаю что-то вроде этого:

SELECT *
  FROM engg_studens
 WHERE student_Name = '&Student_Name'
   AND department = 'Computer Science &' || ' Engineering';

Использование здесь оператора конкатенации (||) позволяет избежать замены переменной.

0 голосов
/ 03 мая 2018

Другой подход состоит в том, чтобы изменить символ подстановки на то, что, как вы уверены, больше нигде не будет использовано:

SQL> set define ^

SQ> select *
  from Engg_Studens
 where Student_Name = '^Student_Name'
   And Department = 'computer science & Engineering'

Enter value for student_name: Arif
old   3:  where Student_Name = '^Student_Name'
new   3:  where Student_Name = 'Arif'

Только ^Student_Name теперь обрабатывается как переменная подстановки, поэтому вы получите только подсказку для этого.

Вы могли бы также потенциально отделить приглашение от запроса и переключиться на использование фактической переменной связывания, но здесь это выглядит как избыточное.

0 голосов
/ 03 мая 2018

Вы не можете написать заявление, содержащее символ "&".

Попробуйте как ниже:

select * from Engg_Studens where Student_Name = '&Student_Name' 
and Department = 'computer science '|| chr(38) ||' Engineering' ;
...