首页 > 解决方案 > Oracle - 如何从查询创建 csv 字符串

问题描述

我需要从查询中创建一个 csv 字符串,以将其用作发送带有附件的电子邮件的函数的参数,该附件希望文件内容为 clob。

让我们说这个例子:

SELECT DESC,GROUP_COL, ID, CreatedDate  
FROM MyTABLE

我正在寻找一种无需手动管理即可管理日期时间格式、字符串和任何类型内容的方法。

此外,我无法访问磁盘,因此应直接在内存中完成转换,而不使用假脱机。

我读过那个帖子,但每个发布的解决方案都有局限性:如上所述不能使用文件,LIST_AGG 不会自动管理字符串、日期等

即使这看起来也很有趣,但又一次数据类型不会自动管理,应该单独完成,因为列可以包含"、换行等

我看了一下,XMLAgg可以用来加速字符串连接,消除光标和listagg字符限制:

SELECT RTRIM (
      XMLAGG (XMLELEMENT (e, NAME || ',')).EXTRACT ('//text()'),
      ',')        
FROM MyTABLE
group by GROUP_COL;

但再次需要一种方法来使其能够管理任何类型的数据

使用 SQL Server 会容易得多,因为系统邮件发件人接受查询作为参数并自动将其转换为 csv 并作为附件发送,在 Oracle 中我仍然没有找到类似的解决方案。

编辑

我正在寻找的最佳解决方案是一个模块化函数,可以使用不同的查询调用,因此列应该动态连接,而不必一一指定

编辑2

这或多或少是我正在寻找的:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DatabaseMailAlertProfile',
@recipients = '********@gmail.com',
@query = 'SELECT Sno,Name,Age,code FROM Student,
@subject = 'Student Registrations',
@attach_query_result_as_file = 1;

@query = '从学生中选择 Sno,姓名,年龄,代码,

全部由 SQL Server 管理

标签: oraclecsvemail

解决方案


推荐阅读