首页 > 解决方案 > ORA-01756: 字符串中缺少引号

- 顶点、甲骨文、PL/SQL

问题描述

现在我几乎在 APEX 中完成了我的 PL/SQL 代码。从昨天开始我就一直犯错误。

While X < l_date_diff+1 Loop
        l_date_string := l_date_string ||''','''||to_char(TO_DATE(:P2066_DATE_FROM, 'dd.mm.yyyy')+X,'dd.mm.yyyy') ;
        X := X + 1;
End Loop;

l_date_string := substr(l_date_string,3)|| chr(39);
   
   l_script := 'Select * from
                    (Select 
                        pkey, 
                        to_char(createdformat,''dd.mm.yyyy'') business_date, 
                        regexp_substr(statistics, ''business_\w*'') business_statistics 
                    from 
                        gss.business_data 
                    where 
                        statistics like ''%business_%'' 
                        and createdformat between :P2066_DATE_FROM and :P2066_DATE_UNTIL
                     ) ';
   
   
   l_script_pivot := l_script || ' pivot(
                    count(pkey) 
                    for business_date 
                    in ('||l_date_string||') 
                    )';

我逐步构建了代码,因此我可以准确定义错误发生的位置。

返回“返回”时,我现在收到错误:ORA-20999:解析返回的查询结果为“ORA-20999:无法解析 SQL 查询。

ORA-06550:第 18 行,第 6 列:ORA-01756:字符串中缺少引号

”。

如果我只返回第一部分而不是 l_script_pivot,即 l_script 并查看 l_script_pivot 的值,代码看起来是正确的。我什至可以在 SQL 中输入它并得到结果。某处我在复合字符串 l_script_pivot 中遗漏了一个撇号

标签: oracle-apex

解决方案


while X < l_date_diff+1
Loop
    l_date_string := l_date_string||','||to_char(TO_DATE(:P2066_DATE_FROM,'dd.mm.yyyy')+X,'dd.mm.yyyy') ;

    X := X + 1;
End Loop;

   l_script := 'Select * from
                (Select 
                    pkey, 
                    to_char(createdformat,"dd.mm.yyyy") business_date, 
                    regexp_substr(statistics, "business_\w*") business_statistics 
                from 
                    gss.business_data 
                where 
                    statistics like "%business_%"
                    and createdformat between :P2066_DATE_FROM and :P2066_DATE_UNTIL
                 ) ';


 l_script_pivot := l_script || ' pivot(
                count(pkey) for business_date   in (l_date_string) 
                )';

推荐阅读