oracle英文单词意思是"神谕",据说当时取这个名字是希望oracle数据库能像神谕一样为他们指点迷津,快速找到所需要的信息。
sqlplus我们程序员"聆听神谕"的一个重要工具,掌握好这个工具对于提高我们工作效率有着重要的意义。
最近一段时间由于工作需要,经常使用sqlplus进行数据查询。我总结了一些经验,在此与大家分享:
一、 变量
很多人都知道可以在sqlplus中,可以使用define语句定义一个变量,然后使用&来引用它。关于定义变量,还有很多相关的知识点:
1 &和&&的区别
&与&&均可以定义变量, 但是&定义的变量是临时性的,每次遇到这个变量时,都会提示你输入一个值。 而&&定义的变量赋一次值后,再遇到此变量不会要求重新输入该变量的值。
sys@ORCL>select &var_tmp, &var_tmp, &&var, &&var from dual;
sys@ORCL>select &var_tmp, &var_tmp, &&var, &&var from dual;输入 var_tmp 的值: 1输入 var_tmp 的值: 1输入 var 的值: 2原值 1: select &var_tmp, &var_tmp, &&var, &&var from dual新值 1: select 1, 1, 2, 2 from dual 1 1 2 2---------- ---------- ---------- ---------- 1 1 2 2;
默认情况下sqlplus会显示替换前后的sql语句,但大多数情况下我们不需要看到这些,可以用set verify off来关闭这个显示
sys@ORCL>set verify offsys@ORCL>select &&var from dual; 2---------- 2
&&定义的变量有时候我们也需要重新修改,这个时候可以通过UNDEFINE
sys@ORCL>undefine varsys@ORCL>select &&var from dual;输入 var 的值: 1 1---------- 1
2 关闭变量
有时候我们需要往数据库插入含有'&'的数据,这个时候sqlplus的变量功能就会给我们造成麻烦了。这个时候我们可以选择使用set define来修改标识变量开始的前缀字符或关闭变量功能。
sys@ORCL>set define #sys@ORCL>select '&var_first', '#var_second' from dual;输入 var_second 的值: 1原值 1: select '&var_first', '#var_second' from dual新值 1: select '&var_first', '1' from dual '&VAR_FIRS '---------- -&var_first 1 sys@ORCL>set define offsys@ORCL>select '&var_first', '#var_second' from dual; '&VAR_FIRS '#VAR_SECON---------- -----------&var_first #var_second
但偶尔也有一行语句有的需要绑定变量,有的不需要的情况。这个时候我们可以通过转义字符来处理。
sys@ORCL>set escape sys@ORCL>select '&var', &var_tmp from dual;输入 var_tmp 的值: 2原值 1: select '&var', &var_tmp from dual新值 1: select '&var', 2 from dual '&VA 2---- ----------&var 2
3 关于变量赋值方法
我们平时比较常见的变量赋值方法是通过define语句给变量赋值