oracle存储过程错误,怎么改
CREATEORREPLACEPROCEDUREPROC_JSGC_AFTERZBFILEBEIAN(BeiAnGuidINNVARCHAR2)ASBEGINUPDATE...
CREATE OR REPLACE PROCEDURE PROC_JSGC_AFTERZBFILEBEIAN
(BeiAnGuid IN NVARCHAR2)
AS
BEGIN
UPDATE JSGC_BiaoDuanInfo
SET BZJIsWeiTuo = '1',
BaoZhengJinIsSend = '1',
BZJShouDate = GETDATE()
WHERE BiaoDuanGuid IN (
SELECT BiaoDuanGuid
FROM JSGC_ZBFileAndBD a
LEFT JOIN JSGC_ZhaoBiaoFileBeiAn b ON a.BeiAnGuid = b.BeiAnGuid
WHERE a.BeiAnGuid =BeiAnGuid
AND b.IsWeiTuo = '1'
AND b.AuditStatus = '3' )
END;
end PROC_JSGC_AFTERZBFILEBEIAN; 展开
(BeiAnGuid IN NVARCHAR2)
AS
BEGIN
UPDATE JSGC_BiaoDuanInfo
SET BZJIsWeiTuo = '1',
BaoZhengJinIsSend = '1',
BZJShouDate = GETDATE()
WHERE BiaoDuanGuid IN (
SELECT BiaoDuanGuid
FROM JSGC_ZBFileAndBD a
LEFT JOIN JSGC_ZhaoBiaoFileBeiAn b ON a.BeiAnGuid = b.BeiAnGuid
WHERE a.BeiAnGuid =BeiAnGuid
AND b.IsWeiTuo = '1'
AND b.AuditStatus = '3' )
END;
end PROC_JSGC_AFTERZBFILEBEIAN; 展开
展开全部
觉得这段代码是Oracle和SQL Server的混合体。你究竟使用的是哪个数据库? 要在哪个数据中创建存储过程?
nvarchar2既不是Oracle也不是SQL Server中有的类型;
Oracle中每个语句之后要有分号,存储过程中的update语句后面没有;
getdate()是SQL Server中获取时间的函数,Oracle中没有;
最后已经有end PROC_JSGC_AFTERZBFILEBEIAN;了,那么前面的单独的end;语句就重复了;
nvarchar2既不是Oracle也不是SQL Server中有的类型;
Oracle中每个语句之后要有分号,存储过程中的update语句后面没有;
getdate()是SQL Server中获取时间的函数,Oracle中没有;
最后已经有end PROC_JSGC_AFTERZBFILEBEIAN;了,那么前面的单独的end;语句就重复了;
更多追问追答
追答
黄色背景的那段代码中,后面的那个BeiAnGuid未指定具体的来源表,这个字段在JSGC_ZBFileAndBD和JSGC_ZhaoBiaoFileBeiAn中都有,必须明确指定来源于哪个表。
另外,好像这个条件放在where中,会抵消掉left join的效果(因为它与left join的条件相同,但是把左连接中b表中的无对应数据的记录给排除了)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询