我试图通过从Putty运行Shell脚本来将包规范和主体编译到数据库(Oracle)中。我的最终目标是使用.ldt文件注册并发程序以运行此程序包。 我在特定路径中有文件(.pkb和.pks),我尝试使用以下脚本:
...
WriteMessage "Creating package XLRIPHD_BOMREPORT_PKG.pks"
RunSQLScript $XXMOB_TOP/sql/XLRIPHD_BOMREPORT_PKG.pks
WriteMessage "Creating package XLRIPHD_BOMREPORT_PKG.pkb"
RunSQLScript $XXMOB_TOP/sql/XLRIPHD_BOMREPORT_PKG.pkb
...
和 RunSQLScript 定义如下:
# RunSQLScript
# Runs the given SQL script. The script must accept apps and custom
# credentials (whether or not they are used)
# $1 = filename
#---------------------------------------------------------------------
RunSQLScript()
{
if [ $errorFlag = N ] ; then
WriteMessage "Running script ${1}"
if sqlplus -s $appsCredentials @${1} $appsCredentials $customCredentials >> $logFile
then
WriteMessage "Script ${1} complete."
else
WriteMessage "Error running script ${1} - please check the log"
errorFlag=Y
fi
fi
}
问题是我得到了#34;运行脚本[filename]"在屏幕上,但之后没有。我也没有完成"脚本完成"消息也不是错误消息。
但是,在日志文件中,在上述相同的消息/日志文本之后,还有一个"输入终止于26个字符"。我搜索并快速解决这个问题是添加' /'到了脚本的末尾,我做了。但即使在此之后,输出或日志也没有变化。我不确定这是否与原始问题有关。
每次运行脚本时,都会在最初验证自定义和应用程序凭据。
编辑:按照Alex的要求添加Package Spec和WriteMessage
PKS档案内容
create or replace
PACKAGE XLRIPHD_BOMREPORT_PKG
AS
/***********************************************************************************
* Company Name : XLRI PHD
* Script Name : XLRIPHD_BOMREPORT_PKG.pks
* Program Type : PL SQL Package specification BOM Criticality Report
* Program Description : BOM Criticality Report extraction from oracle EBS 11i
* Parameters :
* Author : Subhasish
* Date : 25-OCT-2016
* Modification Details : Date Modified By Comments
* --------- -------------- -------------------------
* Comments :
*
***************************************************************************************/
PROCEDURE XLRI_BOM_ANALYSIS (
ERRBUF OUT VARCHAR2,
RETCODE OUT NUMBER,
p_org_id IN NUMBER
);
END XLRIPHD_BOMREPORT_PKG
EXIT;
的WriteMessage:
WriteMessage()
{
echo "$1"
echo "\n$1" >> $logFile
}
答案 0 :(得分:0)
您的包装说明不完整。 END
需要以分号结束,the whole PL/SQL section needs to be terminated with a slash - 否则CREATE
语句永远不会被执行,而SQL * Plus只是在提示等待您输入更多内容码。 (由于-s
标志,行号提示未显示在日志中。
您的脚本应以:
结尾...
PROCEDURE XLRI_BOM_ANALYSIS (
ERRBUF OUT VARCHAR2,
RETCODE OUT NUMBER,
p_org_id IN NUMBER
);
END XLRIPHD_BOMREPORT_PKG;
/
EXIT;
您的.pkg
脚本可能会遇到同样的问题。