流水号储存程序解决并发问题
主子表都在同张单 想透过储存程序先预先将流水号带入资料表 防止并发问题 CONCATENATE("XXX", replace(today(), "-", "") * 10000 + sql(" 数据库", "select (right(max(FR_NO),4)+1) from 资料表 where left(right(FR_NO,12),8) = '" + replace(today(), "-", "") + "'", 1, 1)) SSMS 如何写成储存程序能预先存入资料表

FineReport cheng1217 发布于 2023-8-2 09:55
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
Z4u3z1Lv6专家互助
发布于2023-8-2 10:20(编辑于 2023-8-2 10:37)

CREATE PROCEDURE Proc_LSH

AS

BEGIN

SET NOCOUNT ON;

DECLARE @MAX_ NVARCHAR(100)

select @MAX_=(right(max(FR_NO),4)+1) from 资料表 where left(right(FR_NO,12),8) = CONVERT(NVARCHAR(10),GETDATE(),112)

SET @MAX_= 'XXX'+ CONVERT(nvarchar(10),GETDATE(),112) +'0000'+CONVERT(NVARCHAR(100),ISNULL(@MAX_,'0'))

-----这个应该直接改成 SET @MAX_= 'XXX'+ CONVERT(nvarchar(10),GETDATE(),112)+CONVERT(NVARCHAR(100),ISNULL(@MAX_,'0'))

INSERT INTO 资料表(FR_NO) values(''+CONVERT(NVARCHAR(100),@MAX_)+'')

END

GO

最佳回答
1
LTC朝Lv6高级互助
发布于2023-8-2 10:07(编辑于 2023-8-2 10:34)

---

  • 2关注人数
  • 252浏览人数
  • 最后回答于:2023-8-2 10:37
    请选择关闭问题的原因
    确定 取消
    返回顶部