Oracle 目录创建文件命名
我已经创建了一个目录并创建了一个匿名块来在其中创建一个文件。每次执行块时,文件都会被覆盖。我需要它被创建为一个新文件。我该怎么做才能做到这一点Oracle 目录创建文件命名,oracle,plsql,Oracle,Plsql,我已经创建了一个目录并创建了一个匿名块来在其中创建一个文件。每次执行块时,文件都会被覆盖。我需要它被创建为一个新文件。我该怎么做才能做到这一点 DECLARE v_name utl_file.file_type; v_count NUMBER := 0; BEGIN v_name := utl_file.fopen('PLSQL_DIR', 'Task1.txt', 'W'); utl_file.put_line( v_name, TO_CHAR(SYS
DECLARE
v_name utl_file.file_type;
v_count NUMBER := 0;
BEGIN
v_name := utl_file.fopen('PLSQL_DIR', 'Task1.txt', 'W');
utl_file.put_line(
v_name,
TO_CHAR(SYSDATE, 'DD/MM/YY/HH/MI')||' Data Migration Starts'
);
FOR i IN (SELECT * FROM sue_par_det_tb) LOOP
utl_file.put_line(
v_name,
i.patient_name||', '|| i.ord_date||', '|| i.mobile_number||', '|| i.refered_by
);
v_count := v_count + 1;
END LOOP;
utl_file.put_line(
v_name,
v_count||' Rows generated at '||TO_CHAR(SYSDATE, 'DD/MM/YY/HH24/MI')
);
utl_file.fclose(v_name);
END;
/
将文件名拆分为名称和扩展名,如果有,则在名称后附加一个数字,检查该文件是否存在并循环,直到找不到文件为止 比如:
DECLARE
v_file utl_file.file_type;
v_dir VARCHAR2(30) := 'PLSQL_DIR';
v_filename VARCHAR2(256) := 'Task1.txt';
v_name VARCHAR2(256) := SUBSTR( v_filename, 1, INSTR( v_filename, '.', -1 ) - 1 );
v_ext VARCHAR2(256) := SUBSTR( v_filename, INSTR( v_filename, '.', -1 ) );
v_num INTEGER := NULL;
v_count NUMBER := 0;
BEGIN
LOOP
EXIT WHEN NOT FileExists( v_dir, v_filename );
IF v_num IS NULL THEN
v_num := 1;
ELSE
v_num := v_num + 1;
END IF;
v_filename := v_name || '.' || v_num || v_ext;
END LOOP;
v_name := utl_file.fopen( v_dir, v_filename, 'W' );
-- rest of your code
END;
/
请编辑您的问题并添加代码。如果使用相同的文件名,Oracle将写入相同的文件。声明v_name utl_file.file_type;v_计数编号:=0;开始v_name:=utl_file.fopen'PLSQL_DIR','Task1.txt','W';utl_file.put_linev_name,TO_CHARSYSDATE,'DD/MM/YY/HH/MI'| |数据迁移开始';对于我,请从sue_par_det_tb LOOP utl_file.put_linev_name、i.patient_name、i.ord_date、i.mobile|number、i.refered|by;v_计数:=v_计数+1;端环;utl|u file.put_line v|u name,v|u count | | |行在“| |到| CHARSYSDATE,'DD/MM/YY/HH24/MI'生成;utl_file.fclosev_名称;结束/在上面的查询中,我需要创建一个重复的文件来执行n次。感谢您的即时响应。