序列化查询结果

时间:2017-05-12 14:48:38

标签: oracle csv plsql blob

我有一个财务系统,其所有业务逻辑都位于数据库中,我必须为交易批处理编写自动化工作流程,其中包括以下步骤:

  1. 用户或外部系统在表格中插入一些数据
  2. 在进一步处理之前,必须以具有数字签名的CSV文件的形式创建此数据的快照。 CSV快照本身及其签名必须保存在同一输入表中。程序更新成功签名行,使其可用于进一步的代码步骤 ......代码的进一步步骤
  3. 明显的问题是第2步:我不知道如何将查询结果作为表示CSV文件的BLOB分配给变量。这似乎是一些基本的东西,但我无法找到它。 CSV格式由用户选择,因为它是人类可读的。签名本身可以通过外部系统请求进行,因此不是问题。 限制:

    • 没有可以处理数据的应用服务器,所以我必须使用plsql
    • 没有办法保存本地文件,一切都必须动态完成

    我知道通常会在应用程序层或一些本地文件上完成所有工作,但不幸的是情况并非如此。 任何帮助将非常感谢,提前谢谢

2 个答案:

答案 0 :(得分:0)

我同意@ william-robertson。你只需要创建一个逗号分隔值字符串(假设标题和数据行)并将其写入CLOB。我推荐一个"插入"触发。你可以做很多SQL技巧来使这更容易)。使用该CSV字符串时,需要由读取它的应用程序部分拥有,并且需要对其执行某些操作。

答案 1 :(得分:0)

我明白你说你需要创建一个CVS,但看看你是否可以做XML。然后,您可以使用DBMS_XMLGEN直接从查询中为数据库列生成必要的快照。

我不接受CVS是人类可读的概念(实际上有时候尝试直接文本)。有效的是Excel以人类可读的形式显示它。但是也应该能够将XML显示为人类可读的。此外,如果需要,其中的数据可以直接反向移植到原始列中。

只是一个替代的想法。