使用Oracle替换变量进行查询

时间:2018-05-03 13:14:25

标签: sql oracle sqlplus

我有一个示例SQL代码,如下所示

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

我的问题是:在运行SQL时,它要求'& engineering'的替换变量在部门名称中。 我应该只被要求'&student_name'

3 个答案:

答案 0 :(得分:3)

你不能写一个包含"&"字符。

尝试如下:

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

答案 1 :(得分:1)

你可以逃脱第二个&符号(&),但老实说,我从来没有记得如何做到这一点。我通常做这样的事情:

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

在此使用连接(||)运算符可以避免替换变量。

答案 2 :(得分:1)

另一种方法是change the substitution character对你确定不会在其他地方使用的东西:

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视为替换变量,因此您只能获得提示。

您还可以将提示与查询分开并切换到使用实际的绑定变量,但这似乎有点过分。