sql - 如何创建通过电子邮件发送视图快照的存储过程?
问题描述
我有一个视图,我需要每天查看它,它可以让我知道我需要的数据馈送是否在早上的设定时间准备好。
select * from vdatafeeds
我想通过加载视图来自动执行此操作,而不是使用存储过程将其快照通过电子邮件发送给我。
有没有办法创建一个存储过程,当运行电子邮件时,该过程会从视图的副本中取出?
我正在使用 SQL Developer 20.4
TLDR:基本上我只是希望它就像有人加载视图然后复制内容并将其粘贴到电子邮件中然后将其发送给我一样。
解决方案
有办法,当然。
如果视图内容不是那么大(我想是这样;谁会想要检查百万行?)并且适合VARCHAR2
数据类型局部变量大小,您可以逐行选择(在循环中)并将值连接到该变量中; 最后,您只需将其放入电子邮件正文中。
另一种选择是创建列的数据类型为的附加表,CLOB
并将视图内容放在那里。然后,您将发送一封带有附件的电子邮件,其来源是该CLOB
列。
或者,您可以创建一个文件(使用UTL_FILE
内置包)。
无论您选择哪个选项,这样的存储过程都将使用DBMS_SCHEDULER(或 DBMS_JOB,如果在您的数据库版本中仍然可用)安排在所需时间运行(例如每天早上 06:50)。
但是,您真的必须检查整个视图内容吗?你不能“总结”要发送的信息吗?例如:
- number of rows in a view : 23
- last updated : 10.08.2021 23:48
那是 - 在我看来 - 更简单和更容易。
推荐阅读
- python - Is it okay to manipulate training as well as testing data before training a classifier model?
- nuxt.js - nuxt can't route to page if dot in query string
- r - CVXR in R: What happens when no solution is found within the time limit?
- javascript - React) Why does the video stop when you go back and forth in react?
- javascript - How to disable the backspace key in user textbox when i press spacebar?
- sql - 当存在 WITH 语句时,WHERE IN (SELECT) 语句会中断查询
- swift - How to get first two elements of a stack in Swift?
- react-native - How to create a custom image picker component, like instagram [REACT-NATIVE]
- c# - 当我“绘制”线时,如何将点平均分配到 LineRenderer 的宽度曲线?
- docker - Bazel 使用本地 golang 模块构建 docker 容器