【发布时间】:2017-11-10 19:31:42
【问题描述】:
我有一个接收 XML 的程序:
CREATE OR REPLACE PROCEDURE PROCESS_XML(xml IN CLOB) AS
BEGIN
DBMS_OUTPUT.PUT_LINE('XML processing started');
END;
现在我正在编写一个 bash 脚本,该脚本将从服务器下载一些 XML 文件,对于每个文件,我将使用 SQL Plus 调用上述过程。
#!/bin/bash
file=$(curl -s "http://example.com/someFile.xml");
sqlplus myuser/mypass@myhost:1521/myscheme <<< "EXECUTE PROCESS_XML('$file')";
它适用于小文件,但对于大文件,我收到以下错误:
SQL*Plus: Release 12.1.0.2.0 Production on Thu Jun 8 18:28:19 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP
and Data Mining options
SQL> Input truncated to 7499 characters
SP2-0027: Input is too long (> 2499 characters) - line ignored
我有什么办法可以发送那些大的 XML 吗?
谢谢
【问题讨论】:
-
您是否可以将文件放在可以从数据库中读取的位置,使用
utl_file或通过Oracle 目录对象作为外部表)?或者甚至从数据库内部(需要 ACL 等)从远程网站获取文件? -
@AlexPoole 是的,这是我的第一种方法,但我没有,也不允许我更改 ACL 权限。所以如果可能的话,我想通过 SQL Plus 来做到这一点......谢谢
标签: oracle stored-procedures oracle11g sqlplus