1,使用execute immediate处理DDL操作
在PL/SQL处理DDL语句时,execute immediate后面只需要带有ddl语句文本即可,而不需要into和using子句:
example:
DECLARE
l_sql VARCHAR2(2000);
p_table VARCHAR2(240);
BEGIN
p_table := 'CUX_TEST';
l_sql := 'drop table CUX.' || p_table;
dbms_output.put_line('l_sql='||l_sql);
EXECUTE IMMEDIATE l_sql;
END;
2、使用动态sql执行程序
example:
EXECUTE IMMEDIATE 'begin ' || g_import_package ||
'.validate_data(:0,:1);end;'
USING IN p_account_id, OUT x_message;
参数要用‘:’
传入或者传出的只要一一对应,不管类型
3、处理多行
动态SQL处理多行查询语句,需要使用OPEN-FOR,FETCH和CLOSE 语句。
---定义游标变量---打开游标变量---循环游标变量---关闭游标变量
(1),定义游标变量语法
declare type cursor_name is ref cursor;
cursor_variable cursor_name;
(2),打开游标变量语法
OPEN cursor_variable for dynamic_string [USING bind_argument[,bin_argument]...];
--dynamic_string是动态的select语句,bind_argument用于指定存放传递给动态select语句值的变量。
(3),循环提取数据语法
FETCH cursor_variable INTO {var1[,var2]..| record_var};
--var是用于接收提取结果的变量;record_var是用于接收提取结果的记录变量。
(4),关闭游标
CLOSE cursor_variable;