请问为什么一直是这个报错>ORA-00933:SQL命令未正确结束

update  bwptest1.sys_item_list

set

SUBSELECT_SQL = '{select case when (select * from UserHasAction(%CurrentUserID%,'23,24,146,148'))=1

             then  sql1||'where 1=1'

             when (select * from userhasaction(%CurrentUserID%,'25,28,147'))=1

             then  sql1||' where b.are_id = ''' || %DataAreaID% || ''''

             when (select * from userhasaction(%CurrentUserID%,'88,89'))=1

             then  sql1||' where b.districtid in(' || %DataDistrictID% || ')'

             when (select * from userhasaction(%CurrentUserID%,72))=1

             then  sql1||'where a.sho_id in (%_mul_ShopStr%)'

        else sql1||'where a.sho_id ='''|| %DataShopID%||''''

        end  bieming

  from (select '

                select b.are_id, c.are_name, b.districtid, d.districtname, a.Sho_ID, a.bra_Id,

                       case when b.createtime >= to_date(to_char(current_date,''YYYY'')) then ''是'' else ''否'' end ISNEWSHOP,

                       a.WhenDate, a.DealCount, a.saleamount, a.salemoney, a.deductmoney

                  from (select Sho_ID, WhenDate, bra_id,(DealCount) DealCount, (saleamount) saleamount,

                               (salemoney) salemoney, (deductmoney) deductmoney

                         from shop_day_bra_sales a

                         where (WhenDate between @startdate@ and @enddate@

                                 or WhenDate between @CompareStartDate@ and @CompareEndDate@

                                )

                       ) a

                 inner join shop b on a.sho_id = b.sho_id

                 left join area c on b.are_id = c.are_id

                 left join districtlist d on b.districtid = d.districtid

                ' sql1 from dummy

       )

 }

'

where

 ITEM_ID = '200707';

能不能帮看一下

Peihowe 发布于 2021-5-9 09:22 (编辑于 2021-5-10 08:50)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
zsh331Lv8专家互助
发布于2021-5-9 09:59

数据库查询-https://help.fanruan.com/finereport/doc-view-107.html

——————————

image.png

————————————

「更新操作」用存储过程去实现吧!

另外:SQL脚本的问题很多,= =###

image.png

  • Peihowe Peihowe(提问者) 我的意思是直接用navicat直接修改也不行
    2021-05-09 10:27 
  • zsh331 zsh331 回复 Peihowe(提问者) 大括号的意思是干什么?先把里面的子查询跑通!
    2021-05-09 11:46 
  • Peihowe Peihowe(提问者) 回复 zsh331 我修改了原句,就修改增加一个left join,就例如把1改成2那样子,修改字段的值,然后显示命令未正确结束
    2021-05-09 12:41 
  • Peihowe Peihowe(提问者) 回复 zsh331 数据类型是clob
    2021-05-09 12:54 
  • zsh331 zsh331 回复 Peihowe(提问者) 语法不完整,所以提示命令未结束;
    2021-11-16 17:28 
最佳回答
0
李先生你好Lv2见习互助
发布于2021-5-9 14:48

update  bwptest1.sys_item_list

set

SUBSELECT_SQL ='sql语句'  where ITEM_ID = '200707';

更新bwptest1.sys_item_list表的SUBSELECT_SQL(clob)字段,是这个意思吗?

  • Peihowe Peihowe(提问者) 是的
    2021-05-09 14:53 
  • 李先生你好 李先生你好 回复 Peihowe(提问者) 整个sql语句是不是只用于存储到SUBSELECT_SQL字段,无论语法对错,只把sql当做字符窜。如果是,那就是你拼接得不对, \'{select case when (select * from UserHasAction(%CurrentUserID%,\'23,24,146,148\')) 这一行单引号就没拼接好,检查一下拼接情况。或者你先把SQL语句改成任意字符以测试是否因为拼接而出现报错
    2021-05-10 09:22 
  • 3关注人数
  • 645浏览人数
  • 最后回答于:2021-5-10 08:50
    请选择关闭问题的原因
    确定 取消
    返回顶部