您好我有一個MS SQL Server 2012中的過程,其中我正在執行一些插入和更新,但在該過程的某些部分中,我使用遊標進行循環插入。沒有使用遊標插入
有人可以幫我做循環插入而不使用光標嗎?
完整代碼如下
(
@TerritoryName varchar(200),
@TerritoryDescription varchar(2000),
@TerritoryID int,
@CountyIDs varchar(500),
@ZipCodeIDs varchar(500)
)
AS
BEGIN
Declare @countyid int,@zipcodeid int,@Target_GeographyTypeID int;
DECLARE @t TABLE(idx int primary key identity,id int)
DECLARE @tzip TABLE(idx int primary key identity,id int)
INSERT INTO @t
SELECT item from fn_split(@CountyIDs,',')
INSERT INTO @tzip
SELECT item from fn_split(@ZipCodeIDs,',')
IF(@TerritoryID < 1)
BEGIN
INSERT INTO Territories(TerritoryName,TerritoryDescription,Active,CreatedDate)
VALUES(@TerritoryName,@TerritoryDescription,1,Getdate())
SET @TerritoryID= @@identity
END
ELSE
BEGIN
UPDATE Territories
SET [email protected],
[email protected]
WHERE [email protected]
END
SELECT @Target_GeographyTypeID=GeographyTypeId from GeoGraphyTypes
WHERE GeographyTypeName='County'
DELETE from Territory_mapping
WHERE [email protected]
DECLARE db_cursor CURSOR FOR
SELECT id
FROM @t
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @countyid
WHILE @@FETCH_STATUS = 0
BEGIN
if(@countyid > 0)
BEGIN
INSERT INTO Territory_mapping(TerritoryID,Target_GeographyTypeID,Target_GeographyID,CreatedDate)
VALUES(@TerritoryID,@Target_GeographyTypeID,@countyid,GETDATE())
END
FETCH NEXT FROM db_cursor INTO @countyid
END
CLOSE db_cursor
DEALLOCATE db_cursor
-------------------- Zip Code -----------------------
SELECT @Target_GeographyTypeID=GeographyTypeId from GeoGraphyTypes
WHERE GeographyTypeName='Zipcode'
DECLARE db_cursor CURSOR FOR
SELECT id
FROM @tzip
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @zipcodeid
WHILE @@FETCH_STATUS = 0
BEGIN
IF(@zipcodeid > 0)
BEGIN
INSERT INTO Territory_mapping(TerritoryID,Target_GeographyTypeID,Target_GeographyID,CreatedDate)
VALUES(@TerritoryID,@Target_GeographyTypeID,@zipcodeid,GETDATE())
END
FETCH NEXT FROM db_cursor INTO @zipcodeid
END
CLOSE db_cursor
DEALLOCATE db_cursor
RETURN @TerritoryID
END
@CountyID包含逗號分隔的縣ID's –
「@ TerritoryID','@ Target_GeographyTypeID'從哪裏來?從'@ t'表? –
否@T和@Territory是兩者independent.code兩者都低於: –