交互式命令
sql*plus提供交互式命令可以接收用户输入,向用户提示提示信息,方便用户操作。
替换变量和绑定变量
替换变量:定义一个变量用于接收用户输入。使用&作为提示符, 如:&a
绑定变量:预先定义的变量。使用:作为提示符,如::a
在一个sql语句中包含替换变量时,sql*plus会提示用户输入,并且会每次运行sql语句,都提示提示信息,如:
S QL> l
1 select *
2* from student
SQL> i where code = &a;
SQL> /
输入 a 的值: 97001
原值 3: where code = &a
新值 3: where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
SQL> /
输入 a 的值: 97001
原值 3: where code = &a
新值 3: where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
SQL> /
输入 a 的值: 97001
原值 3: where code = &a
新值 3: where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
此时,如果你改用&&, 那么sql*plus只会提示一次,以后不再提示,并将第一次输入的值保存到sql*plus运行环境中,
此时,如果调用define命令可以看到替换变量的值。如:
SQL> l
1 select *
2 from student
3* where code = &a
SQL> c/&a/&&a/
3* where code = &&a
SQL> /
输入 a 的值: 97001
原值 3: where code = &&a
新值 3: where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
SQL> /
原值 3: where code = &&a
新值 3: where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
SQL> /
原值 3: where code = &&a
新值 3: where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
SQL> define a
DEFINE A = "97001" (CHAR)
下面我们看具体的命令:
1) DEF[INE] [variable = text] | DEF[INE] variable
--- 定义替换变量| 显示替换变量的值
--- define 命令只能定义char型变量
SQL> define a = 97001
SQL> select * from student where code = &a;
原值 1: select * from student where code = &a
新值 1: select * from student where code = 97001
CODE CLASS SCORE
---------- -------------------- ----------
97001 数学 80
SQL> define a
DEFINE A = "97001" (CHAR)
2) UNDEF[INE] variable
---- 清除指定替换变量的定义,可以一次清除多个。
SQL> define a = 97001
SQL> define b = 97003
SQL> undefine a b
SQL> define a
SP2-0135: 符号 a 未定义
SQL> define b
SP2-0135: 符号 b 未定义
3) PROMPT[text]
----将指定的提示信息text或者一个空行输出到屏幕上。
SQL> prompt "hello sql*plus!"
"hello sql*plus!"
SQL> prompt "请输入学号:"
"请输入学号:"
SQL> prompt
4) PAUSE[text]
----用于暂停脚本文件的运行,将指定的提示信息text或者一个空行输出到屏幕上,用户回车后可以继续执行。
SQL> pause "hello"
"hello"
5) ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE ]
[FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT] ] [HIDE]
---- 用于定义替换变量,可以定义以上几种类型
---- 可以指定变量的格式,默认值
---- 可以指定提示信息和不指定提示信息
---- 可以选择隐藏用户输入
SQL> accept a number
10
SQL> accept a number prompt "请输入数字:"
请输入数字:10
SQL> define a
DEFINE A = 10 (NUMBER)
在sql语句中可以使用绑定变量,使用绑定变量时要在变量名称前加上:
定义绑定变量时用VARIABLE命令
给绑定变量赋值要使用 execute命令,相当于执行过程
显示绑定变量时要用PRINT命令
1) VAR[IABLE][variable [NUMBER | CHAR | CHAR(n) | NCHAR| NCHAR(n) | VARCHAR2(n) | NVARCHAR2(n) | CLOB | NCLOB| REFCURESOR | BINARY_FLOAT | BINARY_DOUBLE]]
2) EXECUTE variable = text
3) PRINT variable1 variable2...
SQL> var a number
SQL> var b char
SQL> var c varchar2(10)
SQL> execute :a := 10
PL/SQL 过程已成功完成。
SQL> execute :b := 'a'
PL/SQL 过程已成功完成。
SQL> execute :c := 'aa'
PL/SQL 过程已成功完成。
SQL> print a b c
A
----------
10
B
--------------------------------
a
C
--------------------------------
aa