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;
/