如果| ELSE 条件检查 Oracle 数据库查询输出是否显示任何结果或 NULL

如果| ELSE 条件检查 Oracle 数据库查询输出是否显示任何结果或 NULL

我发现很难为以下条件编写 if|else 语句。我正在做的是我有一个 Oracle 数据库,我正在其中运行以下查询,它返回行中的输出(它可以显示记录,也可以返回 NULL 值),我想要的是如果该行作为输出返回,那么它应该执行几个命令,如果没有返回行,那么它应该执行第二组命令。

示例 1——它显示了输出。

SQL> select value from v$parameter where name='spfile';
VALUE
---------------
+DATA_01/TESTDB/spfileTESTDB.ora

示例 2 —— 在某些情况下,它不能返回任何行。

SQL> select value from v$parameter where name='spfile';
VALUE
--------------

答案1

你可能想做这样的事情:

db_connect="user/pass@db"

output=$(
    sqlplus -s "$db_connect" <<'END' | sed '/^$/d'
        set heading off
        select value from v$parameter where name='spfile';
END
)

-s选项和set heading offsqlplus 命令旨在最小化无关的输出。sed '/^$/d'是删除空行。结果$output应该是空字符串(对于空结果)或查询输出的行。

请注意,ENDheredoc 终止符该行上不得有任何其他字符。这就是为什么它不像其他行那样缩进。

然后你可以这样做:

if [[ -n "$output" ]]; then
    stuff if there is output
else
    stuff if there is null output
fi

相关内容