我正在尝试运行以下查询,并且我不断收到错误:**ORA-01756: quoted string not properly terminated**
SELECT
InnerTable."Cycle ID",
(
SELECT REPLACE(SYS_CONNECT_BY_PATH(CF_ITEM_NAME,'//'),'//','/')
AS "Path1"
FROM CYCL_FOLD
START WITH CF_FATHER_ID = InnerTable."Cycle ID"
CONNECT BY PRIOR CF_ITEM_ID = CF_FATHER_ID
) as "path1",
InnerTable."CSR/RCQ Name",
TEST.TS_DESCRIPTION as "Test Case Description",
FROM
(-- few conditions here
) InnerTable INNER JOIN TEST ON InnerTable."Test Case ID" = TEST.TS_TEST_ID
任何机构都可以告诉我语法有什么问题。谢谢......
答案 0 :(得分:1)
此错误表示您使用奇数个单引号。
您发布的代码段仅包含平衡的引号对 - 在REPLACE(SYS_CONNECT_BY_PATH(CF_ITEM_NAME()链中。所以问题必须在于查询的被删除部分:
-- few conditions here
编校是否包含任何字符串文字?如果是这样检查它们。
使用支持SQL语法突出显示的IDE很容易发现此错误。
“我发现单引号或双引号没有任何错误”
我也不是。嗯。
/
有可能以某种方式逃避引用。这取决于您的客户端设置。在SQL * Plus中,ESCAPE默认是关闭的,除了默认的转义字符是\
。所以你的陈述对我的设置起作用......
SQL> sho escape
escape OFFSQL> select '//' from dual
2 /
'/
--
//
SQL> c.//./
1* select '/' from dual
SQL> r
1* select '/' from dual
'
-
/
SQL> set escape on
SQL> r
1* select '/' from dual
'
-
/
SQL>
...但无论如何都要检查您的客户端设置。