Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Oracle 绑定变量和替换变量(我使用&;&;)之间有什么区别?_Oracle_Variables_Plsql_Declaration_Sqlplus - Fatal编程技术网

Oracle 绑定变量和替换变量(我使用&;&;)之间有什么区别?

Oracle 绑定变量和替换变量(我使用&;&;)之间有什么区别?,oracle,variables,plsql,declaration,sqlplus,Oracle,Variables,Plsql,Declaration,Sqlplus,这两个变量声明之间的区别是什么 1:num编号:='&&num' 2:变量num1编号 因为在这两种情况下,我也可以通过在其他文件中使用&num或&num来引用num, 对于绑定变量:num1 此外,我还有一个困惑:下面的陈述是否有所不同,它们是否都有效,它们的意思是否相同 1:变量num1编号 2:var num1编号对于Oracle中的绑定变量和SQL*Plus中的替换变量之间的差异,您似乎有些困惑 让我们从替换变量开始。替换变量是SQL*Plus独有的,不是数据库的一部分。例如,如果您尝试

这两个变量声明之间的区别是什么

1:
num编号:='&&num'
2:
变量num1编号

因为在这两种情况下,我也可以通过在其他文件中使用
&num
&num
来引用
num
, 对于绑定变量
:num1

此外,我还有一个困惑:下面的陈述是否有所不同,它们是否都有效,它们的意思是否相同

1:
变量num1编号

2:
var num1编号

对于Oracle中的绑定变量和SQL*Plus中的替换变量之间的差异,您似乎有些困惑

让我们从替换变量开始。替换变量是SQL*Plus独有的,不是数据库的一部分。例如,如果您尝试将它们与JDBC一起使用,它们将不起作用

替换变量只能保存一段文本。如果SQL*Plus在输入行中遇到替换变量,它将用其文本内容替换该变量:

SQL> define subvar=X SQL> select * from dual where dummy = &subvar; old 1: select * from dual where dummy = &subvar new 1: select * from dual where dummy = X select * from dual where dummy = X * ERROR at line 1: ORA-00904: "X": invalid identifier 如果
&subvar
恰好包含一个有效数字的字符串(例如
5
),那么我们可以不使用引号就可以离开,但这只是因为取出文本
&subvar
并用文本
5
替换它恰好为有效的SQL

例如,假设我们有一个名为
test
的表,其中包含以下数据:

A ---------- 1 2 3 4 5 绑定变量是数据库的标准部分,您可以将它们与JDBC或您选择的任何连接到数据库的方法一起使用


最后,
变量num1数
变量num1数
的含义相同。它们都定义了类型为
number
的绑定变量
num1
var
只是
variable
的缩写

A ---------- 1 2 3 4 5 SQL> define subvar=5 SQL> select * from test where a = &subvar; old 1: select * from test where a = &subvar new 1: select * from test where a = 5 A ---------- 5 SQL> variable bindvar varchar2(1); SQL> exec :bindvar := 'X'; PL/SQL procedure successfully completed. SQL> select * from dual where dummy = :bindvar; D - X SQL> select * from dual where dummy = ':bindvar'; no rows selected SQL> variable bindvar number; SQL> exec :bindvar := 'X'; BEGIN :bindvar := 'X'; END; * ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 1