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;
展开
 我来答
Andy_Sun321
2014-11-12 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:732万
展开全部
觉得这段代码是Oracle和SQL Server的混合体。你究竟使用的是哪个数据库? 要在哪个数据中创建存储过程?
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表中的无对应数据的记录给排除了)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式