plsql编程中变量的声明

创建第一个程序hello world
begin 
dbms_output.put_line('Hello world');
end;
/

set serveroutput on;(输出语句到dos窗口的命令)

begin 
dbms_output.put_line('Hello world');
end;
/
就可以在dos窗口中看到Hello world;

(简单变量的声明)
声明变量:
declare
    v_name varchar2(20);(变量名在前,类型在后)
begin
    v_name  := 'myname';(给变量进行赋值)
    dbms_output.put_line(v_name);
end;
/
(异常处理)
declare
    v_num number := 0;
begin
    v_num := 2/v_num;
    dbms_output.put_line(v_num);
exception
    when others then 
        dbms_output.put_line('error'); 
end;
    变量声明的规则:
1  变量名不能使用保留字:(from,select)
2  第一个字符必须是字母
3  变量名最多包含30个字符
4  不要与数据库的表或者列同名
5  每一行只能声明一个变量

    常用类型变量:
binary_integer :整数,主要用来计数而不是用来表示字段类型,(提高效率)
number;数字类型
char:定长字符串;
date:日期;
long:长字符串,最长2G;
boolean 布尔类型,可以取值true,false ,null值
常量的练习;
declare
        v_temp number(1);
        v_count binary_integer :=0;
        v_sal number(7,2) :=4000.00;
        v_date date := sysdate;
        v_pi constant number(3,2) := 3.14;
        v_valid boolean :=false;
        v_name varchar2(20) not null :='MyName';
begin 
        dbms_output.put_line('v_temp value' || v_temp);(||连接符)
end;
/
注释一句用'--'   注释一段/*               */
 dbms_output.put_line()不能打印boolean 变量

使用%type属性:
declare ( 变量声明类型依据 表的类型变化)
    v_empno number(4);
    v_empno2   emp.empno%type;
    v_empno3   v_empno2%type;
begin
    dbms_output.put_line('Test');
end;

复合变量的声明:

    第一种:
Table变量类型(相当于java的数组)
declare
        type   type_table_emp_empno is table of emp.empno%type index by binary_integer;
        v_empnos   type_table_emp_empno;
begin 
        v_empnos(0) := 7369;
             v_empnos(2) := 7839;
             v_empnos(-1) := 9999 ;--(下标可以是小于0的)(注释)
        dbms_output.put_line(v_empnos(-1));
end;

Record变量类型:(相当于java的类)
declare 
    type   type_record_dept is  record
        (
            deptno dept.deptno%type,
            dname dept.dname%type,
            loc dept.loc%type
        );
    v_temp type_record_dept;
begin
        v_temp.deptno :=50;( 相当于引用去访问成员变量)
            v_temp.dname :='aaaa';
            v_temp.loc     := 'bj';
            dbms_output.put_line(v_temp.deptno || '   '|| v_temp.dname);
end;

使用%rowtype声明record 变量;
declare
   v_temp   dept%rowtype;
   begin  
        v_temp.deptno := 50;
        v_temp.dname := 'aaaa';
        v_temp.loc := 'bj';
        dbms_output.put_line(v_temp.deptno || ' ' || v_temp.dname);
end;

SQL(select)语句在PlSQL中的应用:
declare
        v_ename emp.ename%type;
        v_sal emp.sal%type;
begin  --plsql语句中select语句中必须有 into ,必须保证返回记录
         select ename,sal  into  v_ename,v_sal from emp where empno = 7369;
        dbms_output.put_line(v_ename || ' ' || v_sal);
end;

declare
        v_emp emp %rowtype;
begin 
          select *into v_emp from emp where empno = 7369;
        dbms_output.put_line(v_emp.empno);
end;

其他SQL 语句在plsql中的应用:
declare 
        v_deptno dept.deptno%type := 50;
        v_dname dept.dname%type :='aaaa';
        v_loc dept.loc%type := 'bj';
begin  --插入数值;
         insert into dept2 values(v_deptno,v_dname,v_loc);
    commit;
end;


declare 
        v_deptno   emp2.deptno%type  := 10;
        v_count number;
begin
         update emp2 set sal=sal/2 where deptno =v_deptno;
        --select deptno into v_deptno from emp2 where empno = 7369;
       -- select count(*) into v_count from emp2;
             --    sql表示刚刚执行完的那条语句,(执行完这条语句后,有多少记录被                                影响)
        dbms_output.put_line(sql%rowcount || '条记录被影响');
        commit;
end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值