Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用Oracle替换变量进行查询_Sql_Oracle_Sqlplus - Fatal编程技术网

Sql 使用Oracle替换变量进行查询

Sql 使用Oracle替换变量进行查询,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我有一个示例SQL代码,如下所示 select * from Engg_Studens where Student_Name = '&Student_Name' And Department = 'computer science & Engineering' ; 我这里的问题是:在运行SQL时,它要求为部门名称中的“&engineering”替换变量。 应该只要求我输入“&student_name”您不能编写包含“&”字符的语句 尝试以下方法: select *

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

select *
  from Engg_Studens
 where Student_Name = '&Student_Name'
   And Department = 'computer science & Engineering' ;
我这里的问题是:在运行SQL时,它要求为部门名称中的
“&engineering”
替换变量。
应该只要求我输入
“&student_name”

您不能编写包含“&”字符的语句

尝试以下方法:

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

不能编写包含“&”字符的语句

尝试以下方法:

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

你可以避开第二个符号(
&
),但老实说,我从来都不记得该怎么做。我通常会这样做:

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

在这里使用串联(
|
)运算符可以避免替换变量。

您可以转义第二个与(
&
)符号,但老实说,我从来都不记得该怎么做了。我通常会这样做:

SELECT *
  FROM engg_studens
 WHERE student_Name = '&Student_Name'
   AND department = 'Computer Science &' || ' Engineering';
在此处使用串联(
|
)运算符可以避免替换变量。

另一种方法是处理您确信不会在其他地方使用的内容:

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\u Name
被视为替换变量,因此您只会得到提示

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

另一种方法是处理您确定不会在其他地方使用的内容:

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\u Name
被视为替换变量,因此您只会得到提示


您也可以将提示与查询分开,并切换到使用实际绑定变量,但这里似乎是多余的。

这是因为您没有正确地逃脱< <代码> >代码>计算机科学与工程> <代码>,并且认为它是绑定变量。阅读与问题无关的解决方案,但这是一个替换变量,而不是绑定参数。它们是不同的东西。我建议将标题标题更改为“使用Oracle替换变量进行查询”。这是因为您在代码< >计算机科学与工程> <代码>中没有正确地逃脱<代码>和<代码>,并且认为它是绑定变量。阅读与问题无关的解决方案,但这是一个替换变量,而不是绑定参数。它们是不同的东西。我建议将问题标题改为“使用Oracle替换变量查询”。实际上,您可以。您必须正确转义字符,更改替换变量字符的设置(使用不同的字符)或完全关闭替换变量(并使用参数化查询)。实际上,您可以。您必须正确地转义字符,更改替换变量字符的设置(使用不同的字符)或完全关闭替换变量(并改用参数化查询)。尝试使用语法,结果成功。谢谢你的脚本。尝试了语法,效果很好。谢谢你的剧本。当我测试它时,它工作了,所以不知道该告诉你什么。这取决于“不起作用”是什么意思。当我测试它时,它起作用了,所以不知道该告诉你什么。这取决于“不起作用”是什么意思。