标题:新人求教插入变量问题
只看楼主
qq31315719
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-11-11
结帖率:0
已结贴  问题点数:20 回复次数:3 
新人求教插入变量问题
declare @SHEET_NO varchar(18)
 
set @SHEET_NO ='XD0000021711100003';

INSERT INTO t_rm_vip_stored
(SHEET_NO,BRANCH_NO,CUST_NO,CUST_NAME,TEL_NO,SERVER_NO,SERVER_NAME,TOT_NUM,TOT_MONEY,REAL_MONEY,FAV_MONEY,RET_NUM,OPER_OPER,OPER_DATE,SERVER_TYPECODE,MEMO,VOLID_DATE,STORED_FLAG,PAY_WAY,CARD_NO,VIP_ID,MONTH_COUNT)
select
 @SHEET_NO+1,'000001',mobile,vip_name,mobile, '1','10送','11','100.00','100.00','0.00', save_amt,'1001','2017-11-10 21:17:29.827','02','','2017-11-10 21:15:30.863','0','RMB','', mobile,NULL
from t_rm_vip_info where card_type='01'  and save_amt>'0'

我想从表t_rm_vip_info中抽出mobile,vip_name ,save_amt字段配合固定值插入到表t_rm_vip_stored 中,插入的的时候@SHEET_NO自动加1 XD0000021711100003这个是单据号,在表里是不允许重复 ,现在就是向插入的时候XD000002171110不变 后面开始从0003递增
搜索更多相关主题的帖子: 插入 变量 mobile and 字段 
2017-11-11 20:02
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:20 
如果你每次都只插入1条记录,就先读取最大值,然后+1
select @SHEET_NO=max(SHEET_NO) from t_rm_vip_stored
INSERT INTO t_rm_vip_stored(SHEET_NO,.......)
select substring(@SHEET_NO,1,14)+right('0000'+cast(substring(@SHEET_NO,15,4)+1 as varchar(4)),4),.............
2017-11-11 21:40
qq31315719
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-11-11
得分:0 
回复 2楼 mywisdom88
declare @SHEET_NO varchar(18)
 
set @SHEET_NO ='XD0000021711100003';
select @SHEET_NO=max(SHEET_NO) from t_rm_vip_stored

INSERT INTO t_rm_vip_stored
(SHEET_NO,BRANCH_NO,CUST_NO,CUST_NAME,TEL_NO,SERVER_NO,SERVER_NAME,TOT_NUM,TOT_MONEY,REAL_MONEY,FAV_MONEY,RET_NUM,OPER_OPER,OPER_DATE,SERVER_TYPECODE,MEMO,VOLID_DATE,STORED_FLAG,PAY_WAY,CARD_NO,VIP_ID,MONTH_COUNT)
select
substring(@SHEET_NO,1,14)+right('0000'+cast(substring(@SHEET_NO,15,4)+1 as varchar(4)),4),'000001',mobile,vip_name,mobile, '1','10送','11','100.00','100.00','0.00', save_amt,'1001','2017-11-10 21:17:29.827','02','','2017-11-10 21:15:30.863','0','RMB','', mobile,NULL
from t_rm_vip_info where card_type='01'  and save_amt>'0'

这样写得到的结果是消息 2627,级别 14,状态 1,第 6 行
违反了 PRIMARY KEY 约束 'PK_t_rm_vip_stored'。不能在对象 'dbo.t_rm_vip_stored' 中插入重复键。
语句已终止。
2017-11-11 21:51
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
你先1个个字段来测试,
declare @SHEET_NO varchar(18)
 
-- set @SHEET_NO ='XD0000021711100003';
select @SHEET_NO=max(SHEET_NO) from t_rm_vip_stored
select substring(@SHEET_NO,1,14)+right('0000'+cast(substring(@SHEET_NO,15,4)+1 as varchar(4)),4)
看看这2个结果,同时,你在看看你数据库中,是不是存在这个数据 substring(@SHEET_NO,1,14)+right('0000'+cast(substring(@SHEET_NO,15,4)+1 as varchar(4)),4)

2017-11-12 00:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482367-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149882 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved