服务器 频道

sql*plus使用的一些技巧

  7.如何向数据库中插入两个单引号(’’)
  

  Insert inot dept values(35,’aa’’’’bb’,’a’’b’);


  在插入时,用两个’表示一个’。
  
  8.如何设置sql*plus的搜寻路径,这样在用@命令时,就不用输入文件的全路径。
  设置SQLPATH环境变量。
  如:
  

  SQLPATH = C:\ORANT\DBS;C:\APPS\SCRIPTS;C:\MYSCRIPTS


  
  9.@与@@的区别是什么?
  
  @等于start命令,用来运行一个sql脚本文件。
  @命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。
  @@用在脚本文件中,用来指定用@@执行的文件与@@所在的文件在同一目录,而不用指定全路径,也不从SQLPATH环境变量指定的路径中寻找文件,该命令一般用在嵌套脚本文件中。
  
  10.&与&&的区别
  &用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。
  &&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。
  
  如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:
  

  select count(*) from emp where deptno = &deptnoval;
  select count(*) from emp where deptno = &deptnoval;
  select count(*) from emp where deptno = &deptnoval;


  
  将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值:
  

  select count(*) from emp where deptno = &deptnoval;
  select count(*) from emp where deptno = &deptnoval;
  select count(*) from emp where deptno = &deptnoval;


  
  11.引入copy的目的
  Copy命令在两个数据库之间拷贝数据时特别有用,特别是该命令可以在两个数据库之间传递long型字段的数据。
  缺点
  在两个数据库之间传递数据时,有可能丢失精度(lose precision)。
  
  12.问什么在修改大量的行时,我的脚本会变得很慢?
  当通过PL/SQL块修改一个表中的许多行时,你会创建在表上创建一个cursor,但是只有在你关闭cursor时,才会释放ROLLBACK SEGMENT,这样,当cursor仍然打开时,修改过程会变慢,这是因为数据库不得不搜寻大量的rollback segment以便于维护读一致性。为了避免这样情况,试着在表上加一个标志字段来描述该行是否已经被修改,然后关闭该cursor,然后再打开该cursor。每次可以修改5000行.
0
相关文章