【发布时间】:2017-07-06 01:52:28
【问题描述】:
我知道这是一个经常讨论的话题,但我尝试了其他帖子中的所有答案都无济于事,所以我最终决定发布我的情况。
在我的脚本中:
failures=$(sqlplus -s << EOF
${SQLIN}
set heading off;
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
select failures from dba_jobs where what like dbms_refresh.refresh%;
EOF
)
dbms_refresh.refresh% 是我需要在单引号中捕获的内容,但是,我知道仅使用单引号本身是不够的。我不完全理解 unix 和 oracle 如何在选择命令中翻译单引号。
我尝试了以下方法,但没有成功:
谁能给我解释一下 unix 和 oracle 是如何相互交谈的,这决定了如何在选择查询中读取单引号?
编辑:如果我使用'dbms_refresh.refresh%',下面是我的结果
select failures from dba_jobs where what like "dbms_refresh.refresh%" check_mview_test.sh check_mview_test_v1.ksh check_mview_test_v1.sh get_pageid_test.sh ERROR at line 1: ORA-00904: "dbms_refresh.refresh%": invalid identifier
【问题讨论】:
-
为什么你认为单独使用单引号是不够的?在 bash(和变体)中使用
where what like 'dbms_refresh.refresh%';对我来说效果很好。只使用单引号会出现什么错误? -
你试过不使用反斜杠吗?我可以轻松执行你的命令。
-
嗯,这很有趣。我正在使用 korn shell。我将尝试在 bash 中执行。我会用我的错误更新我的问题。
-
根据错误,您的编辑使用双引号,而不是单引号。我对 ksh 中的单引号也没有问题;但可能是版本问题(如果您确实收到错误) -
ksh --version告诉您什么? -
看到这就是我的困惑。 y 脚本使用单引号,但错误返回显示双引号。
ksh --version返回--version: bad option(s),抱歉,不知道如何为您获得更好的输出