我創建一個股市數據庫,並很爲難,下面的工作正常,只是最後選擇返回結果(在此之後,選擇不會對後續循環改變)。我試圖簡化代碼如下,提前爲反饋謝謝(我還是小白):SQL服務器:While循環嵌套如果
三個表:
- BuyOrders
- SellOrders
- MatchedOrders
處理NewBuyOrder的存儲過程:
Insert NewBuyOrder to BuyOrders;
While (NewBuyOrder.SharesRemaining > 0)
SELECT TOP 1
FROM SellOrders
WHERE SellOrders.Price <= NewBuyOrder.Price
ORDER BY SellOrders.Price, SellOrders.TimePlaced;
IF NewBuyOrder.SharesRemaining < SellOrders.SharesAvailable
UPDATE SellOrders.SharesAvailable = [difference];
UPDATE BuyOrders = 0;
INSERT INTO MatchedOrders;
SET NewBuyOrder.SharesRemaining = 0;
BREAK;
ELSE
UPDATE SellOrders = 0;
UPDATE BuyOrders = [difference];
INSERT INTO MatchedOrders;
SET NewBuyOrder.SharesRemaining = [difference];
CONTINUE;
這看起來並不像MS SQL服務器 - 是一些僞代碼,還是你用錯誤的服務器標籤標籤呢? – Luaan
我對格式不太熟悉,我們在看僞代碼嗎?如果沒有,這是什麼SQL服務器?我沒有看到任何範圍(開始/結束)在哪裏,而我也沒有看到你選擇進入哪個範圍。如果這是MSSQL,是NewBuyOrder的CLR UDF還是什麼? –
發佈是僞代碼,因爲(我使用SQL Server 2008) - 我一直希望有一個與在/打破一些明顯的錯誤/繼續。 。 。如果不是,我可以發佈整個300行。 –