Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 存储过程中交换了两个变量的值_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 存储过程中交换了两个变量的值

Sql server 存储过程中交换了两个变量的值,sql-server,stored-procedures,Sql Server,Stored Procedures,我修改了一个存储过程,并添加了一个要添加到表中的额外参数。问题是添加的参数的值正在与原始参数交换 ALTER PROCEDURE [dbo].[spWeb_BulkGenerateWRsDevices] ( @WorkRequestDeviceId nvarchar(max) = NULL, @TechnicianId int = NULL, @RequiredBy datetime = NULL, @Priority int = NULL, @WRTypeId int,

我修改了一个存储过程,并添加了一个要添加到表中的额外参数。问题是添加的参数的值正在与原始参数交换

ALTER PROCEDURE [dbo].[spWeb_BulkGenerateWRsDevices]
(
    @WorkRequestDeviceId nvarchar(max) = NULL,
    @TechnicianId int = NULL,
@RequiredBy  datetime = NULL,
@Priority   int = NULL,
@WRTypeId int,
@WorkRequestSummary nvarchar(255) = NULL,
@AuthorOfRequest   int,
@Contact nvarchar(40) = NULL,
@PhoneNo  nvarchar(20) = NULL,
@StatusId int,
@Created  datetime = NULL,
@CustomerId int
)
AS
/* Update the WR record */
BEGIN
DECLARE @COUNT INT
SET @COUNT =(SELECT COUNT(*) FROM WorkRequest WHERE WorkRequestDeviceId IN(SELECT stringval FROM     dbo.CSV(@WorkRequestDeviceId)))

IF @COUNT >0

BEGIN
DECLARE @InsertedRows AS TABLE (WorkRequestId int,WorkRequestDeviceId int)

INSERT INTO WorkRequest 
(AllocatedTo,RequiredBy,Priority,WRTypeId,WorkRequestSummary,AuthorOfRequest,
    Contact,PhoneNo,StatusId,DateOfRequest,WorkRequestDeviceId,CustomerId)

OUTPUT Inserted.WorkRequestId,Inserted.WorkRequestDeviceId INTO @InsertedRows

     SELECT @TechnicianId ,@RequiredBy,@Priority,@WRTypeId,@WorkRequestSummary,@AuthorOfRequest,@Contact
        ,@PhoneNo,@StatusId,@Created,@CustomerId,* from dbo.fnSplit(@WorkRequestDeviceId, ',')

END

IF @COUNT = 0
BEGIN

INSERT INTO WorkRequest 
(WorkRequestDeviceId)
SELECT * from dbo.fnSplit(@WorkRequestDeviceId, ',')

UPDATE WorkRequest 
SET 
AllocatedTo =@TechnicianId ,
RequiredBy = @RequiredBy,
Priority = @Priority,
WRTypeId = @WRTypeId,
WorkRequestSummary =@WorkRequestSummary,
AuthorOfRequest= @AuthorOfRequest,
Contact = @Contact,
PhoneNo = @PhoneNo,
StatusId = @StatusId,
DateOfRequest = @Created,
CustomerId = @CustomerId
WHERE WorkRequestDeviceId IN(SELECT stringval FROM dbo.CSV(@WorkRequestDeviceId))

END
我已经添加了CustomerId参数。当我调用该过程并说set WorkRequestDeviceId=312和CustomerId=148时,表WorkRequest有一条新记录,但WorkRequestDeviceId=148和CustomerId=312。我不熟悉存储过程,很抱歉我的无知,有什么想法吗?
James

您的insert正在转换insert语句和select语句中的变量

将插入内容更改为:

INSERT INTO WorkRequest 
(AllocatedTo,RequiredBy,Priority,WRTypeId,WorkRequestSummary,AuthorOfRequest,
    Contact,PhoneNo,StatusId,DateOfRequest,CustomerId,WorkRequestDeviceId)

一切都会好起来的。

嗨,谢谢你的快速回复,我一发帖就自己弄明白了。