如何创建通过电子邮件发送视图快照的存储过程?
Posted
技术标签:
【中文标题】如何创建通过电子邮件发送视图快照的存储过程?【英文标题】:how do I create a stored procedure that emails out a snapshot of a view? 【发布时间】:2021-08-11 11:47:48 【问题描述】:我需要每天查看一个视图,让我知道我需要的数据馈送是否在早上的设定时间准备好。
select * from vdatafeeds
我想通过加载视图来自动执行此操作,而不是使用存储过程通过电子邮件将其快照发送给我。
有没有办法创建一个存储过程,当运行时通过电子邮件发送一个视图的副本?
我正在使用 SQL Developer 20.4
TLDR:基本上我只是希望有人加载视图然后复制内容并将其粘贴到电子邮件中然后发送给我。
【问题讨论】:
【参考方案1】:当然有办法。
如果视图内容不是那么大(我想是这样;谁会想要检查 百万 行?)并且适合 VARCHAR2
数据类型局部变量大小,您可以选择逐行-row(在循环中)和连接值到该变量中;最后,您只需将其放入电子邮件正文中即可。
另一种选择是创建列的数据类型为CLOB
的附加表,并将视图内容放入其中。然后,您将发送一封带有 附件 的电子邮件,其来源是 CLOB
列。
或者,您可以创建一个文件(使用UTL_FILE
内置包)。
无论您选择哪个选项,这样的存储过程都将使用 DBMS_SCHEDULER(或 DBMS_JOB,如果您的数据库版本中仍然可用,则它的旧兄弟)调度运行在期望的时间(例如每天早上 06:50)。
但是,您真的必须检查整个视图内容吗?你不能“总结”要发送的信息吗?例如:
- number of rows in a view : 23
- last updated : 10.08.2021 23:48
这 - 在我看来 - 更简单、更容易。
【讨论】:
我的视图只有几行,基本上只是希望有人加载视图然后复制内容并粘贴到电子邮件中然后发送给我以上是关于如何创建通过电子邮件发送视图快照的存储过程?的主要内容,如果未能解决你的问题,请参考以下文章
如何在启用TDE的情况下查询Cassandra中的敏感数据?