目录
一、定义
二、语法
三、运行时变量可以出现在任意位置
四、具体说明
理论
实操:
1. define name=zhangsan
2.def/define:
3.def/define name:
4.使用accept用来定义带数据类型和提示符的变量
5.取消变量的定义
6.向脚本文件传递参数
一、定义
运行时变量可以让我们和sql语句之间有个交互,允许我们执行sql语句时动态传递参数
二、语法
&varName
三、运行时变量可以出现在任意位置
例如:
select &colName1,&colName2
from &tbName
where &colname = &colValue;
例如:
select id,last_name
from s_emp
where id = &id;
以上 运行时,服务器会提示:输入 id 的值:
当输入完成按下回车:
原值 3: where id = &id
新值 3: where id = 2
四、具体说明
理论
1.&代表取值。&varName,代表取varName这个变量的值,如果这个变量值,之前不存在,那么系统会提示输入这个变量的值。如果存在,直接取值。
2.set verify on ,打开交互提示,如果打开,会显示old和new value。现在默认都是打开的。使用set verify off,关闭。
3.定义变量:define[def] varName = value;
查看定义的变量:define[def] [varName];
取消定义:undefine/undef varName;
实操:
1. define name=zhangsan
定义一个变量名字为name,值为zhangsan
运行select语句时,如果语句中遇到&name会自动替换为zhangsan
例如:
select id,last_name
from s_emp
where last_name='&name';
2.def/define:
查看当前环境中定义的所有变量
3.def/define name:
查看变量name的值。
如果不想在select语句中&name的外边使用'',则可以在定义变量name时写成define name='''zhangsan''';
‘可以用来转义’
例如:
select id,last_name
from s_emp
where last_name = '&name';
小提示:
define name='Smith'
或者
define name=Smith
这两者都可以,使用&name的时候,取的都是Smith,
所以当我们定义完成后,使用select查询时候
如果是
select id,last_name
from s_emp
where last_name='&name'; 会成功
但是 where last_name=&name;就会出错。
所以我们定义的时候,一个定义成
define name='''Smith'''
第一个单引号代表字符单引号,
第二个单引号代表转义 后面的字符
4.使用accept用来定义带数据类型和提示符的变量
accept varName : 代表定义一个变量名字为varName,当按下回车时需要用户输入值。
accept varName dataType : 代表定义一个带数据类型的变量
例如:accept varNum number :代表定义一个变量名字为varNum,类型为Number,当输入类型不是数字类型是报错,提示继续输入。
prompt:当输入变量时,给用户的提示信息。
accept myNum number prompt 区域id:定义一个Number类型的变量myNum,当按下回车时提示区域id
如果希望插入的值是隐藏的,可以在后边写上HIDE:accept num number prompt 密码:空格 HIDE
5.取消变量的定义
undefine varName; 例如: undefine id 取消id 的定义
6.向脚本文件传递参数
在文件中参数使用&n(n代表数字)来表示取第几个参数值,然后再调用文件执行的时候使用
@file val....(多个参数值使用空格分开。)