今天有个写存储过程的朋友问我一个with a  as  。。。。insert 的存储过程为什么总是报错:ORA-00928: 缺失 SELECT 关键字


最后发现with后面只能直接跟select 不能跟insert,修改后解决问题


修改前:

with
 a as(SELECT T.StationId,U.Id AS UserId 
FROM Sys_Station_Info T 
JOIN  Sys_Organize O ON T.StationId=O.OrgCode
JOIN  Sys_UsersRelation R ON O.Id=R.Orgid
JOIN Sys_Users U ON U.Id=R.UserId
WHERE T.Use_Flag=1)


      INSERT INTO USEROFTENIP(StationCode,UserId,Ipaddress,Times,CreateTime)
       SELECT ba.StationId,a.UserId,L.IpAddress,COUNT(L.IpAddress) AS Times,Sysdate from .
a JOIN Sys_Log L ON a.UserId=L.UserId 
  where L.WriteTime>= sysdate-30
  GROUP BY a.StationId,a.UserId,L.IpAddress;


修改后:


       INSERT INTO USEROFTENIP(StationCode,UserId,Ipaddress,Times,CreateTime)

with
 a as(SELECT T.StationId,U.Id AS UserId 
FROM Sys_Station_Info T 
JOIN  Sys_Organize O ON T.StationId=O.OrgCode
JOIN  Sys_UsersRelation R ON O.Id=R.Orgid
JOIN Sys_Users U ON U.Id=R.UserId
WHERE T.Use_Flag=1)

       SELECT ba.StationId,a.UserId,L.IpAddress,COUNT(L.IpAddress) AS Times,Sysdate from .
a JOIN Sys_Log L ON a.UserId=L.UserId 
  where L.WriteTime>= sysdate-30
  GROUP BY a.StationId,a.UserId,L.IpAddress

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐