Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 处理1000+;记录中间的剪辑_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 处理1000+;记录中间的剪辑

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) = '

我在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) = ''
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
.
.
.