如何将(链接的)服务器(在本例中为Morpheus)名称捕获为结果列。我不想在查询本身中定义服务器名称。
exec("
select
COMNO
,T$CPLS ""Catalog""
,T$CUNO ""Customer ID.""
,T$CPGS ""Price Group""
,T$ITEM ""Item Code""
,T$UPCD UPC
,T$DSCA ""Description""
,T$WGHT ""Weight""
,T$SHIP ""Shipping Indicator""
,nvl(T$STDT,to_char(sysdate,'YYYY-MM-DD')) ""From""
,nvl(case T$TDAT
when '4712-01-01' then ' '
when null then ' '
else t$tdat
end,' ') ""To""
,nvl(t$qanp,99999999) ""Qty.""
,T$PRIC ""List Price""
,T$DISC ""Discount""
,to_char(round(t$pric * (1-t$disc/100),2),99999.99) ""Net""
,Source ""Source""
from Table(edi.ftCompositCatalog(?,?,?)) --where trim(t$item)='105188-041'
order by Source,t$cpgs,t$item",'010','145','000164') at morpheus
答案 0 :(得分:2)
如果在运行查询时,您已经知道要指向的链接服务器,那么只需将其作为字符串文字包含在结果中:
exec("
select
'morpheus' ""Server Name""
,T$CPLS ""CATALOG""
...
即使链接的服务器名称存储在变量中,您也可以轻松地执行此操作,因为您正在动态构建查询字符串。
正如您所说,如果您不想将其定义为字符串文字,这是在Oracle中获取主机(服务器)名称的常用方法:
SELECT SYS_CONTEXT ('USERENV', 'SERVER_HOST') FROM DUAL;
如果要在查询中将其作为子查询或内联视图嵌入,我认为它会起作用。
*请注意一些组织&出于安全原因,dba并不希望您知道有关后端环境的任何信息,但假设您没有障碍,这应该可行。