Sql server 处理1000+;记录中间的剪辑
我在SQL Server 2008中遇到了一点问题。我有一个发送商品类型和数量的前端表单。然后,SQL Server将生成与给定项目的给定数量相等的ID。因此,输入如下:Sql server 处理1000+;记录中间的剪辑,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我在SQL Server 2008中遇到了一点问题。我有一个发送商品类型和数量的前端表单。然后,SQL Server将生成与给定项目的给定数量相等的ID。因此,输入如下: Laptop 1000 UPS 10 以上这些都不行,因为笔记本电脑有1000台。但以下工作: laptop 300 ups 350 desktop 300 calculator 300 ... 只要单个项目低于350,金额就可以超过1000 我掌握的部分代码是: DECLARE @ids varchar(max) = '
Laptop 1000
UPS 10
以上这些都不行,因为笔记本电脑有1000台。但以下工作:
laptop 300
ups 350
desktop 300
calculator 300
...
只要单个项目低于350,金额就可以超过1000
我掌握的部分代码是:
DECLARE @ids varchar(max) = ''
DECLARE @currentid varchar(15)
DECLARE @begin int = 0
DECLARE @intgenwhat smallint -- GENERATE A NUMBER OR A LETTER?
DECLARE @currentidlength smallint
DECLARE @ownercode varchar(3) = 'ABC'
BEGIN
SET
while @begin < @p1
BEGIN
SET @currentid = ''
SET @currentidlength = LEN(@currentid + @callercode)
while @currentidlength < 15
BEGIN
SET @intgenwhat = FLOOR(2 * rand())
if @intgenwhat = 0
SET @currentid = @currentid + cast(char(FLOOR(10 * rand()) + 48 ) as varchar)
else
SET @currentid = @currentid + cast(char(FLOOR(10 * rand()) + 65) as varchar)
SET @currentidlength = @currentidlength + 1
END
SET @ids = @ids + @ownercode + @callercode + @currentid + ','
SET @begin = @begin + 1
END
--remove last ,
SET @ids = dbo.DSSMSFN_strRemoveCharacters(@ids, 1, len(@ids) - 1)
END
SELECT @companyids = @ids
该程序添加发票,并为逐个到达的项目创建ID号,然后打印其ID号。存储过程获取到达的项目数,并创建一个15个字符长的唯一ID,然后返回CSV。例如,对于20个摄像头,它会发回20个CSV ID,调用过程将这些ID逐个插入tblitems
表中
对于任何数量的项目,只要单个项目不超过350个左右,这通常是一个快速程序。但是如果您有更好的想法,请与我们分享。乍一看,我很确定您的方法很复杂,但请提供更多细节(预期输出、涉及的表格…)-您应该始终提供任何
varchar
变量和参数的长度(包括在CAST
语句中!)您使用的-否则您可能会意外地得到varchar
默认长度为1个字符的结果-通常不是您想要的。。。。
Invoice Number: 8888888 Date: 2015-08-05
Laptop 100
Camera 20
.
.
.
Invoice Number: 6666666 Date: 2015-08-05
Laptop 100
Camera 20
.
.
.