DBMS_SQL包和本地动态SQL在功能上有许多重叠的地方,但是有的功能只能通过本地动态SQL实现,而有些功能只能通过DBMS_SQL实现。
对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤:
open cursor--->parse---> define column--->excute---> fetch rows--->close cursor;
而对于
dml操作(insert,update)
则需要进行以下几个步骤:
open cursor--->parse---> bind variable--->execute---> close cursor;
对于
delete
操作只需要进行以下几个步骤:
open cursor--->parse---> execute---> close cursor;
利用DBMS_SQL执行DDL语句:
IS
SQL_string VARCHAR2(1000);--存放SQL语句
V_cur integer;--定义整形变量,用于存放游标
BEGIN
SQL_string := 'CREATE TABLE ' || tablename || '(nameVARCHAR(20))';
V_cur := dbms_sql.open_cursor;--打开游标
dbms_sql.parse(V_cur,SQL_string,DBMS_SQL.NATIVE);--解析并执行SQL语句
dbms_sql.close_cursor(V_cur);--关闭游标
END;
利用DBMS_SQL执行SELECT语句:
open cursor--->parse---> define column--->excute---> fetch rows--->close cursor;
BEGIN
利用DBMS_SQL执行DML语句:
open cursor--->parse---> bind variable--->execute---> close cursor;
BEGIN