oracle - 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 管理
解决方案
推荐阅读
- google-cloud-platform - 数据集无效
- android - 如何使 recyclerview 的卡片按钮点击一个单独的事件而不是卡片点击事件本身
- java - java - 如何使用java将集合文档的字段值作为Firestore中的值分配给另一个集合文档字段?
- android - 有时 RxJava onError 不会捕获异常
- javascript - TypeError:无法读取未定义的属性“bio”
- python - 如何修复树莓派 4 键盘错误?
- python - 按下箭头键时,Python键盘模块将数字输出到控制台
- python - 用python创建的图形可以一直出现在笔记本上吗?
- powershell - Powershell 获取过去 6 个月被禁用的 AD 用户的困惑?
- python - 从熊猫系列中返回一个元组