Oracle认证第五章知识点辅导(6)
时间:2013-10-24
来源:Oracle认证考试网 浏览次数:181
【华夏培训网:中国教育培训第一门户】
代码演示:动态SQLDECLARE sql_stmt VARCHAR2(200); --动态SQL语句 emp_id NUMBER(4) := 7566; salary NUMBER(7,2); dept_id NU
代码演示:动态SQL
DECLARE
sql_stmt VARCHAR2(200); --动态SQL语句
emp_id NUMBER(4) := 7566;
salary NUMBER(7,2);
dept_id NUMBER(2) := 90;
dept_name VARCHAR2(14) := 'PERSONNEL';
location VARCHAR2(13) := 'DALLAS';
emp_rec emp%ROWTYPE;
BEGIN
--无子句的execute immediate
EXECUTE IMMEDIATE 'CREATE TABLE bonus1 (id NUMBER, amt NUMBER)'; ①
----using子句的execute immediate
sql_stmt := 'INSERT INTO dept VALUES (:1, :2, :3)';
EXECUTE IMMEDIATE sql_stmt USING dept_id, dept_name, location; ②
----into子句的execute immediate
sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id; ③
----returning into子句的execute immediate
sql_stmt := 'UPDATE emp SET sal = 2000 WHERE empno = :1
RETURNING sal INTO :2';
EXECUTE IMMEDIATE sql_stmt USING emp_id RETURNING INTO salary; ④
EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
USING dept_id; ⑤
END;
代码解析:
① 动态执行一个完整的SQL语句。
② SQL语句中存在3个参数分别标识为:[:1、:2、:3],因此需要用USING关键字对三个参数分别赋值。
③ 对动态查询语句可以使用INTO子句把查询的结果保存到一个变量中,要求该结果只能是单行。
④ 在Oracle的insert,update,delete语句都可以使用RETURNING子句把操作影响的行中的数据返回,对SQL语句中存在RETURNING子句时,在动态执行时可以使用RETURNING INTO来接收。
⑤ 动态执行参数中可以是:[:数字]也可以是[:字符串]。
Oracle认证