You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

可否在shell脚本中使用FND_GLOBAL.CONC_REQUEST_ID获取并发程序请求ID

关于Shell脚本中获取EBS并发请求ID的问题解答

能否在Shell脚本中使用FND_GLOBAL.CONC_REQUEST_ID获取并发程序的request_id?

可以,但仅适用于被Oracle EBS并发管理器直接触发执行的Shell脚本场景。如果你是手动在操作系统层面执行该Shell脚本,不存在并发请求的运行上下文,FND_GLOBAL.CONC_REQUEST_ID会返回空值。

你提供的写法是否是正确的获取方式?

你的核心思路是正确的,但存在几个易导致异常的细节问题,需要优化调整:

  • 依赖的环境变量$FCP_LOGIN仅在并发管理器触发的脚本运行环境中存在,该变量存储了EBS APPS用户的数据库连接串,手动执行脚本时该变量为空会导致数据库连接失败。
  • 现有写法没有过滤SQL查询返回的多余空白字符、空行,最终拿到的v_request_id可能包含不可见的换行或空格,后续使用时会出现逻辑错误。
  • 缺少set pagesize 0配置,可能会返回多余的分页空行,干扰取值。

优化后的数据库查询写法

v_request_id=$(sqlplus -s /nolog <<EOF
connect $FCP_LOGIN
set echo off
set head off
set verify off
set feedback off
set trimspool on
set pagesize 0
SELECT FND_GLOBAL.CONC_REQUEST_ID FROM DUAL;
EOF
)
# 去除返回结果中的所有空白字符,确保仅保留请求ID数字
v_request_id=$(echo $v_request_id | tr -d '[:space:]')

更推荐的无数据库查询写法

Oracle EBS并发管理器调用Shell类型的并发程序时,会自动把并发请求ID作为第一个参数传入脚本,不需要额外查询数据库,性能更高、稳定性更强:

# 无自定义参数时,直接取第一个参数即可
v_request_id=$1

注意:如果你在并发程序定义中配置了自定义传入参数,$1固定为并发请求ID,$2及之后的参数才是你定义的自定义参数。


内容的提问来源于stack exchange,提问作者Supreetha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:27:03