问题描述
嗨,汤姆,
我一直在使用下面列出的脚本来获取目录中的文件名列表,并将其插入全局临时表。一切正常,直到上周我将数据库升级到12.2,脚本不再工作。我发现,根据Oracle Doc ID 2310077.1,从Oracle 12.2发布开始,不再支持服务器端SQLJ。在第19行和第20行的脚本中,有一个insert语句 (SQLJ) 将文件名插入DIR_LIST表中。它不再工作,它导致java源编译失败,当我注释掉insert语句时,编译成功。我仍然需要将文件名插入到表中,请您向我展示另一种方法,而不是使用12.2不再支持的嵌入式SQL。
提前非常感谢。
问候,
丰。
ops $ tkyte @ 8i> 创建或替换
2并编译名为 “DirList” 的java源代码
3 as
4导入java.io.*;
5导入java.sql.*;
6
7公共课程目录
8 {
9公共静态void getList (字符串目录)
10次抛出SQLException
11 {
12文件路径 = 新文件 (目录);
13 String[] list = path.list();
14字符串元素;
15
16表示 (int i = 0; i <列表.长度; i)
17 {
18要素 = 清单 [一];
19 # sql {插入目录列表 (文件名)
20值 (: 元素) };
21}
22}
23
24}
25/
Java创建。
操作 $ tkyte @ 8i>
ops $ tkyte @ 8i> 创建或替换
2过程get_dir_list (变量2中的p_directory)
3作为语言java
4名称 'DirList.getList( java.lang.String )';
5/
我一直在使用下面列出的脚本来获取目录中的文件名列表,并将其插入全局临时表。一切正常,直到上周我将数据库升级到12.2,脚本不再工作。我发现,根据Oracle Doc ID 2310077.1,从Oracle 12.2发布开始,不再支持服务器端SQLJ。在第19行和第20行的脚本中,有一个insert语句 (SQLJ) 将文件名插入DIR_LIST表中。它不再工作,它导致java源编译失败,当我注释掉insert语句时,编译成功。我仍然需要将文件名插入到表中,请您向我展示另一种方法,而不是使用12.2不再支持的嵌入式SQL。
提前非常感谢。
问候,
丰。
ops $ tkyte @ 8i> 创建或替换
2并编译名为 “DirList” 的java源代码
3 as
4导入java.io.*;
5导入java.sql.*;
6
7公共课程目录
8 {
9公共静态void getList (字符串目录)
10次抛出SQLException
11 {
12文件路径 = 新文件 (目录);
13 String[] list = path.list();
14字符串元素;
15
16表示 (int i = 0; i <列表.长度; i)
17 {
18要素 = 清单 [一];
19 # sql {插入目录列表 (文件名)
20值 (: 元素) };
21}
22}
23
24}
25/
Java创建。
操作 $ tkyte @ 8i>
ops $ tkyte @ 8i> 创建或替换
2过程get_dir_list (变量2中的p_directory)
3作为语言java
4名称 'DirList.getList( java.lang.String )';
5/
专家解答
这是一种完全不使用Java的简单得多的方法。带有预处理器的外部表可以处理它。
查看Adrian Billington的博客文章,该文章很好地浏览了代码
http://www.oracle-developer.net/display.php?id=513
查看Adrian Billington的博客文章,该文章很好地浏览了代码
http://www.oracle-developer.net/display.php?id=513
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




