PLSQL操作DDL和行变量的学习

行变量的学习

 

 

  1:说明

    行变量可以存储表的一条记录。

  2:格式

    变量名  表名%rowtype

  3:访问行变量的字段

    变量名.字段名

  4:练习

    -->使用行变量输出显示10号部门的员工编号,姓名,职位

    -->写法1:

     declare

      cursor c is select * from emp where deptno=10;

      row_emp emp%rowtype;  --行变量可以存储表的一条记录

    begin

      open c;

      fetch c into row_emp;

      while c%found

        loop

          dbms_output.put_line(row_emp.empno||' '||row_emp.ename||' '||row_emp.job);

          fecth c into row_emp;

        end loop;

       close c;

     end;

      /

    -->写法2:

      declare 

        cursor c is select * from emp where deptno=10;

        row_emp emp%rowtype;

      begin

        open c;

        fetch c into row_emp;

        loop

          dbms_output.put_line(row_emp.empno||' '||row_emp.ename||' '||row_emp.job);

          fetch c into row_emp;

          exit when c%not found;

        end loop;

        close c;

      end;

      /

    -->写法3:

      declare

        cursor c is select * from emp where deptno=10;

        row_emp emp%rowtype;  --可省略

      begin

        for row_emp in c

          loop

            dbms_output.put_line(row_emp.empno||' '||row_emp.ename||' '||row_emp.job);

          end loop;

      end;

      /

 

PLSQL操作DDL语句

 

        

  1:说明

    需要使用execute immediate 'DDL';

  2:练习

    -->创建一张表 temp 字段id number,name varchar2(20);

    begin

      execute immediate

        'create table temp(

           id number(4),

           name varchar2(20)

        )';

    end;

    /

  3:在执行DDL语句时可以进行插入操作:如insert数据,但是,不能直接写insert into ,因为DDL仅仅处于编译状态,此时数据库中还没有该表,所以直接insert into 会报错,编译不通过,insert也应该写在execute immediate中。

  4:练习

    -->创建表temp_1 ,id,name,同时插入数据1,张三,2,李四。

    begin

      execute immediate

      'create table temp_1(

        id number(3),

        name varchar2(20)

      )';

      execute immediate 'insert into temp_1 values(1,'张三')';

      execute immediate 'insert into temp_1 values(2,'李四')';

    end;

    /

      

 

posted @ 2018-05-17 14:46  Coding_Now  阅读(1069)  评论(0编辑  收藏  举报