/*
4、动态sql
场景1:PL/SQL无法直接完成DDL语句的执行,需要使用动态SQL
场景2:开发中动态传入sql语句的场景
EXECUTE IMMEDIATE 动态SQL语句
[ into 变量列表 ]
[ using 参数列表]
*/
--4.1 执行DDL语句
declare
sqlstr varchar2(500);
begin
sqlstr:='create table stu (
stuid number(6),
stuname varchar2(200),
phone char(11),
remark varchar2(200)
)';
execute immediate sqlstr;
end;
/
desc stu;--查看数据表
drop table stu;--删除数据表 方便重复执行存储语句
--4.2.1 执行无参数查询语句
declare
sqlstr varchar2(500);
pls_emp emp%rowtype;
begin
sqlstr:='select * from emp where empno = 7369';
execute immediate sqlstr into pls_emp;
dbms_output.put_line(pls_emp.ename);
end;
/
--4.2.2 执行有参数查询语句
declare
sqlstr varchar2(500);
pls_emp emp%rowtype;
empno number:=7369;
deptno number:=20;
begin
sqlstr:='select * from emp where empno = :1 and deptno = :2';
execute immediate sqlstr into