用途:执行sql脚本。
脚本内容:
desc v$datafile;
select &1 from v$datafile;
select &field from v$datafile;
SQL> start e:\oracle.sql name status;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
FILE# NUMBER
………传说中的省略号……..
PLUGIN_RESETLOGS_TIME DATE
原值 1: select &1 from v$datafile
新值 1: select name from v$datafile
NAME
--------------------------------------------------------------------------------
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSTEM01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSAUX01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\UNDOTBS01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\USERS01.DBF
输入 field 的值: status
原值 1: select &field from v$datafile
新值 1: select status from v$datafile
STATUS
-------
SYSTEM
ONLINE
ONLINE
ONLINE
备注:在start命令后面的参数e:\oracle.sql表示要执行的sql脚本,再之后的name表示给脚本中的&1占位符赋值,从运行情况中可以看出status并没有给&field赋值,所以可以知道占位符必须是&加数字
C:\Users\zoucq>sqlplus sys/syspassword as sysdba @e:\oracle.sql name status
SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 8月 16 14:47:22 2011
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Release 11.1.0.6.0 - Production
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
FILE# NUMBER
………传说中的省略号……..
PLUGIN_RESETLOGS_TIME DATE
原值 1: select &1 from v$datafile
新值 1: select name from v$datafile
NAME
--------------------------------------------------------------------------------
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSTEM01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSAUX01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\UNDOTBS01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\USERS01.DBF
输入 field 的值: status
原值 1: select &field from v$datafile
新值 1: select status from v$datafile
STATUS
-------
SYSTEM
ONLINE
ONLINE
ONLINE
备注:@命令与start命令唯一的区别就是:@可以在未登陆sqlplus时运行。
Define / undefine命令
作用:定义/取消定义一个变量
SQL> define field = status;
SQL> start e:\oracle.sql name;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
FILE# NUMBER
………传说中的省略号……..
PLUGIN_RESETLOGS_TIME DATE
原值 1: select &1 from v$datafile
新值 1: select name from v$datafile
NAME
--------------------------------------------------------------------------------
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSTEM01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSAUX01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\UNDOTBS01.DBF
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\USERS01.DBF
原值 1: select &field from v$datafile
新值 1: select status from v$datafile
STATUS
-------
SYSTEM
ONLINE
ONLINE
ONLINE
SQL> undefine field;
SQL>
Prompt / pause / accept / hide命令
作用:prompt 输出提示信息;pause 暂停运行; hide 隐藏输入;accept 指定替换的变量
脚本:
accept name prompt '输入字段:' hide
prompt
prompt ==============
prompt 按<ENTER>继续运行
pause
accept field char prompt '输入字段:'
select &name,&field from v$datafile;
SQL> start e:\oracle.sql;
输入字段:
==============
按<ENTER>继续运行
输入字段:status
原值 1: select &name,&field from v$datafile
新值 1: select name,status from v$datafile
NAME
--------------------------------------------------------------------------------
STATUS
-------
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSTEM01.DBF
SYSTEM
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\SYSAUX01.DBF
ONLINE
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\UNDOTBS01.DBF
ONLINE
NAME
--------------------------------------------------------------------------------
STATUS
-------
D:\PROGRAM_FILES\ORACLE\ORADATA\MATERIAL\USERS01.DBF
ONLINE
--转自