例:procedure GET_BLOB(
wv_sql in varchar2,
wv_blob out Blob
)
is
type blob_t is table of BLOB index by binary_integer;--定义数组
lt_blob blob_t;
begin
execute immediate wv_sql
bulk collect into lt_blob;--返回集合
wv_blob := lt_blob(1);
exception
when others then
null;
end GET_BLOB;
说明:
1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交
如果通过EXECUTE IMMEDIATE处理DML命令,
那么在完成以前需要显式提交或者作为EXECUTE IMMEDIATE自己的一部分.
如果通过EXECUTE IMMEDIATE处理DDL命令,它提交所有以前改变的数据
2. 不支持返回多行的查询,这种交互将用临时表来存储记录(参照例子如下)或者用REF cursors.
3. 当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号.