TomBarrand
Programmer
I have the following syntax for some cursors. The statements are as I would like, but the problem is that SELECT DISTINCT cannot be used for a Cursor that is set FOR UPDATE. How do I get round this?
DECLARE PurchOrdLine_POL_Curs CURSOR
FOR
SELECT Purch_Ord_Line_No, Purch_Ord_No, Revision_No, Description, Series_No, Dept, Style_No, Colour_No, Colour_Description, Freight_Mode, Quantity, FOB_Price, Order_Value
FROM Purch_Ord_Line
WHERE Purch_Ord_No = 1887 AND Revision_No = 1
ORDER BY Purch_Ord_Line_No
FOR READ ONLY
GO
DECLARE FOB_POL_Curs CURSOR
FOR
SELECT DISTINCT dbo.FOB.Purch_Ord_Line_No, dbo.Purch_Ord_Line.Purch_Ord_No, dbo.Purch_Ord_Line.Revision_No, dbo.Purch_Ord_Line.Description, dbo.Purch_Ord_Line.Series_No, dbo.Purch_Ord_Line.Dept, dbo.Purch_Ord_Line.Style_No, dbo.Purch_Ord_Line.Colour_No, dbo.Purch_Ord_Line.Colour_Description, dbo.Purch_Ord_Line.Freight_Mode, dbo.Purch_Ord_Line.Quantity, dbo.Purch_Ord_Line.FOB_Price, dbo.Purch_Ord_Line.Order_Value
FROM dbo.FOB INNER JOIN
dbo.Purch_Ord_Line ON dbo.FOB.Purch_Ord_Line_No = dbo.Purch_Ord_Line.Purch_Ord_Line_No AND dbo.Purch_Ord_Line.Purch_Ord_No = 1887 AND
dbo.Purch_Ord_Line.Revision_No = 0
ORDER BY FOB.Purch_Ord_Line_No
FOR READ ONLY
GO
DECLARE @POLNo Int, @POLPONo Int, @POLRevNo Smallint, @POLDescrip varchar (20), @POLSeriesNo varchar (5), @POLDept varchar (5), @POLStyleNo varchar (5), @POLColourNo Int, @POLColourDescrip varchar (20), @POLFreightMode Char (1), @POLQuantity Int, @POLFOBPrice Decimal, @POLOrderValue Decimal
OPEN PurchOrdLine_POL_Curs
DECLARE @FOBPOLNo Int, @FOBPOLPONo Int, @FOBPOLRevNo Smallint, @FOBPOLDescrip varchar (20), @FOBPOLSeriesNo varchar (5), @FOBPOLDept varchar (5), @FOBPOLStyleNo varchar (5), @FOBPOLColourNo Int, @FOBPOLColourDescrip varchar (20), @FOBPOLFreightMode Char (1), @FOBPOLQuantity Int, @FOBPOLFOBPrice Decimal, @FOBPOLOrderValue Decimal
OPEN FOB_POL_Curs
FETCH NEXT FROM PurchOrdLine_POL_Curs INTO @POLNo, @POLPONo, @POLRevNo, @POLDescrip, @POLSeriesNo, @POLDept, @POLStyleNo, @POLColourNo, @POLColourDescrip, @POLFreightMode, @POLQuantity, @POLFOBPrice, @POLOrderValue
FETCH NEXT FROM FOB_POL_Curs INTO @FOBPOLNo, @FOBPOLPONo, @FOBPOLRevNo, @FOBPOLDescrip, @FOBPOLSeriesNo, @FOBPOLDept, @FOBPOLStyleNo, @FOBPOLColourNo, @FOBPOLColourDescrip, @FOBPOLFreightMode, @FOBPOLQuantity, @FOBPOLFOBPrice, @FOBPOLOrderValue
WHILE @@Fetch_Status = 0 BEGIN
Update FOB
SET Purch_Ord_Line_No = @POLNo
FROM FOB, Purch_Ord_Line
WHERE CURRENT OF FOB_POL_Curs
FETCH NEXT FROM PurchOrdLine_POL_Curs INTO @POLNo, @POLPONo, @POLRevNo, @POLDescrip, @POLSeriesNo, @POLDept, @POLStyleNo, @POLColourNo, @POLColourDescrip, @POLFreightMode, @POLQuantity, @POLFOBPrice, @POLOrderValue
FETCH NEXT FROM FOB_POL_Curs INTO @FOBPOLNo, @FOBPOLPONo, @FOBPOLRevNo, @FOBPOLDescrip, @FOBPOLSeriesNo, @FOBPOLDept, @FOBPOLStyleNo, @FOBPOLColourNo, @FOBPOLColourDescrip, @FOBPOLFreightMode, @FOBPOLQuantity, @FOBPOLFOBPrice, @FOBPOLOrderValue
END
CLOSE FOB_POL_Curs
DEALLOCATE FOB_POL_Curs
CLOSE PurchOrdLine_POL_Curs
DEALLOCATE PurchOrdLine_POL_Curs
DECLARE PurchOrdLine_POL_Curs CURSOR
FOR
SELECT Purch_Ord_Line_No, Purch_Ord_No, Revision_No, Description, Series_No, Dept, Style_No, Colour_No, Colour_Description, Freight_Mode, Quantity, FOB_Price, Order_Value
FROM Purch_Ord_Line
WHERE Purch_Ord_No = 1887 AND Revision_No = 1
ORDER BY Purch_Ord_Line_No
FOR READ ONLY
GO
DECLARE FOB_POL_Curs CURSOR
FOR
SELECT DISTINCT dbo.FOB.Purch_Ord_Line_No, dbo.Purch_Ord_Line.Purch_Ord_No, dbo.Purch_Ord_Line.Revision_No, dbo.Purch_Ord_Line.Description, dbo.Purch_Ord_Line.Series_No, dbo.Purch_Ord_Line.Dept, dbo.Purch_Ord_Line.Style_No, dbo.Purch_Ord_Line.Colour_No, dbo.Purch_Ord_Line.Colour_Description, dbo.Purch_Ord_Line.Freight_Mode, dbo.Purch_Ord_Line.Quantity, dbo.Purch_Ord_Line.FOB_Price, dbo.Purch_Ord_Line.Order_Value
FROM dbo.FOB INNER JOIN
dbo.Purch_Ord_Line ON dbo.FOB.Purch_Ord_Line_No = dbo.Purch_Ord_Line.Purch_Ord_Line_No AND dbo.Purch_Ord_Line.Purch_Ord_No = 1887 AND
dbo.Purch_Ord_Line.Revision_No = 0
ORDER BY FOB.Purch_Ord_Line_No
FOR READ ONLY
GO
DECLARE @POLNo Int, @POLPONo Int, @POLRevNo Smallint, @POLDescrip varchar (20), @POLSeriesNo varchar (5), @POLDept varchar (5), @POLStyleNo varchar (5), @POLColourNo Int, @POLColourDescrip varchar (20), @POLFreightMode Char (1), @POLQuantity Int, @POLFOBPrice Decimal, @POLOrderValue Decimal
OPEN PurchOrdLine_POL_Curs
DECLARE @FOBPOLNo Int, @FOBPOLPONo Int, @FOBPOLRevNo Smallint, @FOBPOLDescrip varchar (20), @FOBPOLSeriesNo varchar (5), @FOBPOLDept varchar (5), @FOBPOLStyleNo varchar (5), @FOBPOLColourNo Int, @FOBPOLColourDescrip varchar (20), @FOBPOLFreightMode Char (1), @FOBPOLQuantity Int, @FOBPOLFOBPrice Decimal, @FOBPOLOrderValue Decimal
OPEN FOB_POL_Curs
FETCH NEXT FROM PurchOrdLine_POL_Curs INTO @POLNo, @POLPONo, @POLRevNo, @POLDescrip, @POLSeriesNo, @POLDept, @POLStyleNo, @POLColourNo, @POLColourDescrip, @POLFreightMode, @POLQuantity, @POLFOBPrice, @POLOrderValue
FETCH NEXT FROM FOB_POL_Curs INTO @FOBPOLNo, @FOBPOLPONo, @FOBPOLRevNo, @FOBPOLDescrip, @FOBPOLSeriesNo, @FOBPOLDept, @FOBPOLStyleNo, @FOBPOLColourNo, @FOBPOLColourDescrip, @FOBPOLFreightMode, @FOBPOLQuantity, @FOBPOLFOBPrice, @FOBPOLOrderValue
WHILE @@Fetch_Status = 0 BEGIN
Update FOB
SET Purch_Ord_Line_No = @POLNo
FROM FOB, Purch_Ord_Line
WHERE CURRENT OF FOB_POL_Curs
FETCH NEXT FROM PurchOrdLine_POL_Curs INTO @POLNo, @POLPONo, @POLRevNo, @POLDescrip, @POLSeriesNo, @POLDept, @POLStyleNo, @POLColourNo, @POLColourDescrip, @POLFreightMode, @POLQuantity, @POLFOBPrice, @POLOrderValue
FETCH NEXT FROM FOB_POL_Curs INTO @FOBPOLNo, @FOBPOLPONo, @FOBPOLRevNo, @FOBPOLDescrip, @FOBPOLSeriesNo, @FOBPOLDept, @FOBPOLStyleNo, @FOBPOLColourNo, @FOBPOLColourDescrip, @FOBPOLFreightMode, @FOBPOLQuantity, @FOBPOLFOBPrice, @FOBPOLOrderValue
END
CLOSE FOB_POL_Curs
DEALLOCATE FOB_POL_Curs
CLOSE PurchOrdLine_POL_Curs
DEALLOCATE PurchOrdLine_POL_Curs