在 plsql 预言机 11 中读取文件并生成查询



我正在编写一个存储过程,我必须执行以下操作: 我想要一个文件(任何格式的属性,json,xml(,该文件将包含我要从表中提取哪些列的信息。

例如:我的表有列 ABCDE 列,假设我的file.properties有以下信息

A=1
B=0
C=1
D=1
F=0

所以我生成的查询应该Select A,C,D from my table;

如何在 Oracle 11G 中执行此操作?

我认为你需要这个

SQL> set serveroutput on;
SQL> create or replace procedure pr_dynamic_sql( v_result out sys_refcursor ) is
    v_outfile  utl_file.file_type;
    v_path     varchar2(100) := 'UTL_FILE_DIR'; 
                            -- alias for the directory where your text files generated at OS.
    v_row      varchar2(100);
    v_file     varchar2(100);
    v_letter   varchar2(10);
    v_number   varchar2(10);
    v_sql      varchar2(100):= 'select ';
begin
    v_file    := 'myfile.properties';
    v_outfile := utl_file.fopen(v_path, v_file, 'r');
  loop
   begin 
     utl_file.get_line(v_outfile,v_row); 
     v_letter := regexp_substr(v_row,'[^=]');
     v_number := substr(regexp_substr(v_row,'[^=]+$'),1,1); 
    if v_number = '1' then
      v_sql := v_sql||v_letter||',';
    end if;             
   exception when no_data_found then exit;
   end; 
  end loop;
    utl_file.fclose(v_outfile); 
    v_sql := rtrim(v_sql,',')||' from mytable'; 
    open v_result for v_sql;
end;

并致电

SQL> begin
  pr_dynamic_sql(v_result => :v_result);
end;
/

以获取游标类型的结果。

最新更新