首页 > 解决方案 > oracle sql错误“ORA-00904:无效标识符”

问题描述

我已经完成了与 ORA-00904 相关的所有问题,但似乎没有一个能够回答我的问题。这是一段 shell 命令,我正在运行并且运行良好:

echo $(dzdo su - oracle -c '
    echo "DB1234" | . oraenv
    sqlplus -s /nolog << "hereDoc"
    CONNECT myUserName/"MyPassword"@DB1234
    select TABLESPACE_NAME from dba_tablespaces;
    hereDoc
')

但是,当我尝试使用 WHERE 子句运行相同的命令时,该命令将失败并出现无效标识符错误:

echo $(dzdo su - oracle -c '
    echo "DB1234" | . oraenv
    sqlplus -s /nolog << "hereDoc"
    CONNECT myUserName/"MyPassword"@DB1234
    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = 'TEMP';
    hereDoc
')

我曾尝试以各种组合运行上述命令,但结果却是同样的错误,甚至更糟的是另一个错误!:

1. select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = q'[TEMP]';
2. select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME in ('TEMP');
3. select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = 'TEMP' ;

这些命令在 sqlplus 提示符下直接运行时可以正确执行。

这似乎很简单,但无法确定案例,我已经花了几个小时试图解决这个问题。

标签: oracleshellsqlplus

解决方案


推荐阅读