关于sqlserver作业报错

qq_30412191 2020-06-22 09:30:51

大佬们看一看,我EXEC执行是不报错的,可为啥 作业报错了呢,可也执行成功了
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2020-06-22
  • 打赏
  • 举报
回复
建议在存储过程里加try...catch...

begin try
 [原有代码]
end try
begin catch
 [写错误信息到日志表]
end catch
qq_30412191 2020-06-22
  • 打赏
  • 举报
回复
USE [PT2_JGEQ_FZXT] GO /****** Object: StoredProcedure [dbo].[PRO_DAM_SYNCHRO_BGD_INFO_JOB] Script Date: 2020/6/22 10:29:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <lb> -- Create date: <2020-6-12> -- Description: <报关行同步文档到生产企业,调用生成表头和表体存储过程> -- ============================================= ALTER PROCEDURE [dbo].[PRO_DAM_SYNCHRO_BGD_INFO_JOB] AS BEGIN DECLARE @V_HEAD_LOG VARCHAR(4000)='', @V_APPLY_NO_SC VARCHAR(38), @V_BODY_LOG VARCHAR(2000), @V_START_TIME VARCHAR(38), @V_APPLY_NO_BGH VARCHAR(38); DECLARE mycursor CURSOR FOR SELECT A.APPLY_NO_BGH FROM DAM_BGD_SYNCHRO_TASK_TEMP A; OPEN mycursor; --打开游标 --从游标里取出数据赋值到我们刚才声明的变量中(移动游标指向到第一条数据,提取第一条数据存放在变量中) FETCH NEXT FROM mycursor INTO @V_APPLY_NO_BGH; WHILE (@@fetch_status = 0) BEGIN SET @V_START_TIME = CONVERT(VARCHAR(100), GETDATE(), 21); EXEC [PRO_DAM_SYNCHRO_WDGL_HEAD] @P_APPLY_NO=@V_APPLY_NO_BGH, @P_OUT_APPLY_NO_SC=@V_APPLY_NO_SC OUTPUT, @P_OUT_RESULT=@V_HEAD_LOG OUTPUT; IF @V_APPLY_NO_SC<>'' BEGIN ---调用创建表体 EXEC [PRO_DAM_SYNCHRO_WDGL_BODY] @P_APPLY_NO_SC=@V_APPLY_NO_SC, @P_APPLY_NO_BGH=@V_APPLY_NO_BGH, @P_OUT_RESULT=@V_BODY_LOG OUTPUT; END ELSE BEGIN SET @V_BODY_LOG='未生成单号数据;'; END SET @V_HEAD_LOG=ISNULL(@V_HEAD_LOG,'')+@V_BODY_LOG; SET @V_APPLY_NO_SC=''; INSERT INTO dbo.JG_WDGL_EXCUTE_LOG ( GUID, SYS_NO, BIZ_NO, NOTE, BIZ_TYPE, CREATE_USER, CREATE_DATE, PRO_START_TIME, PRO_END_TIME, LOG_REMARK ) VALUES ( NEWID(), -- GUID - varchar(50) '', -- SYS_NO - varchar(36) 'aaa', -- BIZ_NO - varchar(36) '文档管理同步设定', -- NOTE - varchar(500) 'TB', 'SYS', -- CREATE_USER - varchar(256) GETDATE(), -- CREATE_DATE - datetime @V_START_TIME, GETDATE(), @V_HEAD_LOG + '插入JG_WDGL_EXCUTE_LOG耗时[开始:' + @V_START_TIME + ',结束:' + CONVERT(VARCHAR(100), GETDATE(), 21) + ']'); FETCH NEXT FROM mycursor INTO @V_APPLY_NO_BGH END ----------所有结束之后删除临时表 CLOSE mycursor; DEALLOCATE mycursor; DELETE FROM DAM_BGD_SYNCHRO_TASK_TEMP; END
qq_30412191 2020-06-22
  • 打赏
  • 举报
回复
引用 5 楼 唐诗三百首 的回复:
试试把步骤2执行的SQL封装为存储过程, 封装后步骤命令框里写"exec 存储过程名"即可. 而不是把一大段代码贴进步骤命令框里.
,你看下干净的一笔, 是不是这个作业有什么bug,我都想在程序里面定时调度了
卖水果的net 2020-06-22
  • 打赏
  • 举报
回复
明显的SQL 语法有问题 建议按 5 楼唐诗 的方法处理。
唐诗三百首 2020-06-22
  • 打赏
  • 举报
回复
试试把步骤2执行的SQL封装为存储过程, 封装后步骤命令框里写"exec 存储过程名"即可. 而不是把一大段代码贴进步骤命令框里.
qq_30412191 2020-06-22
  • 打赏
  • 举报
回复
有的时候回执行成功,有的时候又会报错 ,我什么都没有动,又执行成功了
qq_30412191 2020-06-22
  • 打赏
  • 举报
回复
引用 2 楼 唐诗三百首 的回复:
请把步骤2执行的SQL贴一下.
这个得有好多行,还套着别的存储,我 exec 执行过了,没有报错,但是一放到这里就报错了,我测了好多遍,也执行成功生成了数据,好像也没啥影响,(如果实在要看我可以贴出来,但是我exec不会报错,不知道为啥子)
唐诗三百首 2020-06-22
  • 打赏
  • 举报
回复
请把步骤2执行的SQL贴一下.
lich2005 2020-06-22
  • 打赏
  • 举报
回复
把你的语句复制到SQL的编辑器执行一下看看,一般语法错误都很容易找到原因。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧