boolean和替代变量都只能在PL/SQL脚本中使用,它们不能运用在表列数据中。
1、布尔类型(boolean)
boolean类型主要表达真或假。可以为boolean类型变量赋值true或false。
主要用于PL/SQL脚本的流程控制。
示例:
declare
v1 boolean;
begin
v1:=1>2;
dbms_output.put_line(v1);
end;
问题:打印的结果是什么,是true、false、1、0?
回答:都不对。运行时得到错误信息:调用'PUT_LINE' 时参数个数或类型错误。这是因为在脚本中不能直接打印boolean类型的值,所以只能在脚本中使用if语句来判断。
修改示例:
declare
v1 boolean;
begin
v1:=1>2;
if(v1)then
dbms_output.put_line('true');
else
dbms_output.put_line('false');
end if;
end;
打印:false
2、替代变量
语法:&替换内容
作用:提供用户输入的界面,在用户输入数据以后,先替换PL/SQL脚本,再编译执行。
案例一:输入年龄,然后打印出来
SQL> declare
2 v_age number(3);
3 begin
4 v_age:=&age;
5 dbms_output.put_line('your age is'||v_age);
6 end;
7 /
输入 年龄 的值: 20
原值 4: v_age:=&age;
新值 4: v_age:=20;
说明:在用户输入“20”以后,将“&年龄”替换为了“20”。于是脚本的源代码发生了改变:
declare
v_age number(3);
begin
v_age:=20;
dbms_output.put_line('your age is '||v_age);
end;
所以“&”变量并不是一个真正的变量,它不能保存任何内容,只是提供一个字符串替换的功能。
案例二:用户输入姓名并打印。
declare
v_name varchar2(3);
begin
v_name:=&name;
dbms_output.put_line('your name is'||v_name);
end;
问题:如果用户输入“a”,程序是否能够运行,如果能,打印的结果是什么?
分析:当用户输入“a”,上面代码就是:
declare
v_name varchar2(3);
begin
v_name:=a;
dbms_output.put_line('your name is '||v_name);
end;
由于“a”前后没有单引号,所以会被当作“标识符”即当作变量名。但是a这个变量又没有定义。所以一定会提示如下的错误:必须说明标识符'A'
解决的方法:在“&”前后加上单引号,即:
declare
v_name varchar2(3);
begin
v_name:='&name';
dbms_output.put_line('your name is '||v_name);
end;
/
替代变量小结:
·替代变量的作用主要是为匿名块提供一个数据录入的界面。
·替代变量只是完成字符串替换的功能,不能保存值。
·如果替代变量是字符串,则必须加上单引号。