我得到了一个,它调用一个SQL/PLUS来检查数据并将其放入.CSV文件中。
这个KShell在Unix上运行良好,它创建文件并返回0。
从UC4 AppWorx启动作业,我希望他在完成任务时在Job发送的通知中附加UNIX中的假脱机文件。
我想这样做:
1.I启动工作
2.它检查数据,如果建立了数据,则在UNIX中的/tmp目录中创建一个具有.CSV扩展名的文件。
3.工作结束后,他用Unix给我发了一封带有.CSV的电子邮件。
有办法吗?我怎么做这个?
谢谢。
发布于 2015-02-11 22:10:40
您需要在Appworx中创建一个链( docs应该能够带您通过它)。这个连锁店将有一个或更多的工作岗位。
首先,您不需要一个k脚本来调用SQL/PLUS。您可以直接调用SQL/PLUS。将脚本编写为.sql文件(它可以包括sqlplus指令、sql和PL/SQL )。将作业设置为“程序类型”AWSQLP。将其指向您提供给Appworx的.sql脚本。
sqlplus脚本可以使用逻辑来确定是否应该创建一个文件。如果应该的话,它可以直接写出文件(尽管从它获得适当的.csv文件可能会很痛苦)。
然后,将通知附加到作业,通知对象应设置为执行电子邮件附件。您必须使用“模式”类型,并将完整的文件放入csv。如果希望每次调用都有一个新的文件名,则可以使用替换变量。
根据您的版本,这些选项中的一些可以移动一些(我们去年刚刚升级,UC4不再拥有它)。单击“帮助”菜单并对文档条目执行.这不是世界上最好的,但远远不是最坏的。
发布于 2015-02-12 14:41:57
首先,谢谢你的回答。
我通常创建一个作业,比如SEM_CHECK_THINGS,在UC4上定义了一个提示符,它在数据库中运行一个查询,以检查表test_table (示例)是否有数据,为此,我使用了来自test_table的选择解码(count(*),0,'N','Y')。
此作业还在unix中执行一个简单的KShell:
KShell内容:
echo "Job Name: $1"
echo "Job Control Flag: $2"
jobName=$1
jobFlag=$2
echo "Job ${jobName} started ..." >> $logFile
date >> $logFile
if [[ ${jobFlag} == "Y" ]]; then
echo "Job ${jobName} executed successfully with data found." >> $logFile
echo "Job ${jobName} executed successfully with data found."
exit 1
else
echo "Job ${jobName} finished with no data found." >> $logFile
echo "Job ${jobName} finished with no data found."
exit 0
fi 我通常通过使用Exit 1强制“中止”,如果发现数据请求另一个作业,该作业将执行一个.SQL,该作业将从test_table中断数据。
whenever sqlerror exit sql.sqlcode
whenever sqlerror exit 1
prompt this is a test
set echo off
set trimspool on
set trimout off
set linesize 1500
set feedback on
set newpage none
SET HEADING OFF
set und off
set pagesize 10000
alter session set nls_date_format = 'dd-MON-yyyy HH24:MI:SS';
spool &1
SELECT 'PREV_RESULTSET;LAST_RESULTSET;NR_COUNT' FROM DUAL
UNION ALL
SELECT PREV_RESULTSET||';'||LAST_RESULTSET||';'||COUNT(1) NR_COUNT
FROM SEM_REPORT_PEDIDOS
GROUP BY PREV_RESULTSET, LAST_RESULTSET;
spool off
exit 1通过使用SPo&1和在该作业通知中的“其他输出”选项中的“硬编码”文件testspool.csv,我成功地从该表接收了一封包含我需要/想要的内容的电子邮件。
但是我真的希望它能在一个任务中完成这个任务,做一个验证,如果数据被找到,然后将.CSV文件附加到由该作业发送的电子邮件通知。
https://stackoverflow.com/questions/28465275
复制相似问题