Shell将sqlplus值存储到shell变量

wfsdck30  于 2023-01-26  发布在  Shell
关注(0)|答案(1)|浏览(131)

我正在尝试存储一些sqlplus值到unix变量,但它不工作。请帮助
数据库中的配置文件值为AB_ORACLE_DBREFRESH_PROFILE
我的尝试

Profile=`$ORACLE_HOME/bin/sqlplus -s / as sysdba << endl | grep KEEP | sed 's/KEEP//;s/[ ]//g'
        set heading off
        select 'KEEP',substr(PROFILE,1,27)  from DBA_USERS where USERNAME='SYSTEM';

endl`

它显示substr(1,18),但对于上述值不起作用

sf6xfgos

sf6xfgos1#

您的代码对我来说工作正常。在Oracle客户端的旧版本中可能会有所不同。要检查的事项:
1.您的列大小。SQLPlus并不总是按照您的要求分配宽度,尤其是在对列应用函数时。为列指定别名,并告诉SQL*Plus它将具有的宽度:

set heading off
 col profile format a27
 select 'KEEP',substr(PROFILE,1,27) AS profile  from DBA_USERS where USERNAME='SYSTEM';

1.你的线条大小。你在这里可能没问题,但为了以防万一,请确保线条长度足够:

set heading off
 col profile format a27
 set line 100
 select 'KEEP',substr(PROFILE,1,27) AS profile  from DBA_USERS where USERNAME='SYSTEM';

相关问题