plsql基础学习--三、一般变量与替代变量

一、声明PL/SQL一般变量

语法:

identifier datatype [not null]

  [:=  | default expr];

例:

declare

  v_hiredate date;

  v_deptno number(2) not null:=0;

  v_location varchar2(13):='Atlanta';

二、一般变量

1.PL/SQL块中可以使用变量

(1)在声明部分声明,使用前必须先声明

(2)声明时必须指定数据类型

(3)在可执行部分的SQL语句和过程语句中使用

给变量赋值有两种方法:

(1)使用赋值语句 :=

(2)使用select into语句

spool d:\sql.txt
declare
  emp_code number(4);
  emp_salary number(7,2);
begin
  emp_code:=7499;
  select sal+comm into emp_salary from emp
  where empno=emp_code;
  dbms_output.put_line(emp_salary);
end;
set line 200
set serveroutput on
run

2.一般变量作用域

<<lab1>>

declare

  v_num number(3,4);

begin

  declare

    v_num char(10);

  begin

    lab1.v_num:=12345;

  end;

end;

declare
v_num number(5,2):=1.23;
begin
  declare v_num char(10);
  begin
    v_num:=12345;
    dbms_output.put_line(v_num);
  end;
dbms_output.put_line(v_num);
end;

打印结果为:

12345
1.23

三、替代变量

(1)使用SQL*Plus替代变量来暂时保存值

单个(&)符号

两个(&&)符号

DEFINE和ACCEPT命令

(2)在SQL命令中传递变量值

(3)动态更改表头和表尾

1.使用带有一个&号的变量值来提示用户输入一个值

select empno,ename,sal,deptno

from emp

where empno=&employee_num;

使用set verify命令:使SQL*Plus显示用某个具体值替换变量名之前和之后的命令的文本

(查看当前verify的状态 show verify,默认是on;如果是off的话,则不会显示替换变量名之前的文本)

如果查询条件是字符串,需要在变量外层加上单引号

如果变量外层不加单引号,则需要在输入值的时候加上单引号,不然会报错

运行时指定列名、表达式、文本

使用替换变量对下列内容做出补充:

where条件,order by自居,列表达式,表名,整个select语句

2.带有两个&的替换变量:使用带有两个&的变量可以使得该变量可以重复使用,而不必在每次使用时提醒用户输入。

使用&&后,只要输入一次就行了

3.定义用户变量

可以使用下面的两个SQL*Plus命令来预定义用户变量

DEFINE:创建CHAR类型的用户变量

ACCEPT:读取用户输入并把它存在一个变量里面

说明:

(1)当使用DEFINE命令来定义一个包含空格的变量时,要用单引号将该变量括起来

(2)ACCEPT命令

当接收用户输入时,创建可定制的用户提示

明确地定义NUMBER或DATE类型的变量

处于安全方面的考虑,隐藏用户的输入

在D盘根目下,创建一个文件mysql.txt

文本内容为:

accept dept_num prompt '请输入部门号:'
select * from emp
where deptno=&dept_num;

在sqlplus中运行txt文件的语句:

键入下面的命令

如果mysql.txt中的内容为:

accept dept_num prompt '请输入部门号:' hide
select * from emp
where deptno=&dept_num;

则cmd交互过程中不会显示出用户输入的内容

如果mysql.txt中的内容为:

accept var prompt '请输入密码:' hide
select ename,sal from emp
where 'admin'='&var'
order by sal desc;

则用户需要正确输入密码后,才能查看每个员工的工资信息

define命令的使用示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值