sobota, 20 października 2018

Giełda - tworzenie zlecenia (transakcji) sprzedaży


parametry
@user_id int,
@numberSellStock int,
@stock_name varchar(10)

--pomocnicze
declare @wallet_id int
declare @stock_id int
declare @stockN_id int
declare @stockPrice money
--wyszukanie portfela oraz akcji
select @wallet_id = wal_id from UserTable where usr_id =@user_id
select @stockN_id = stockN_id from StockName where stockN_name = @stock_name
select @stock_id = stock_id, @stockPrice = stock_pricie from Stock where stockN_id = @stockN_id
--wyuszukanie akcji uzytkownika, stan 'brak akcji' oraz ze zostaly zakupione 
mark_transaction = 0
declare @countStockInWallet int
declare @countStockInmarket int
select @countStockInmarket = sum(mark_numberOfShares) from MarketSquare where stock_id = @stock_id and wal_id = @wallet_id and bs_id = 1
select @countStockInWallet = wal_numberOfShares from Wallet where wal_id = @wallet_id
if(@numberSellStock <= @countStockInmarket)
begin
--transakcja na rynek
INSERT INTO [dbo].[MarketSquare]
([stock_id],[wal_id],[mark_numberOfShares]
,[mark_aktywny],[mark_sharePriceBuy]
,[bs_id],[mark_sharePriceSell]
,[mark_dataStart],[mark_TransactionPrice])
VALUES
(@stock_id,@wallet_id,@numberSellStock,1,0,3,@stockPrice,GETDATE(),0)
--update portfela zmniejszenie ilosc akcji
declare @resultStock int
set @resultStock = @countStockInWallet - @numberSellStock
print 'ilosc akcji po wystawienu na sprzedaz => ' + CAST(@resultStock as varchar)
update Wallet set
wal_numberOfShares = @resultStock
where
wal_id = @wallet_id
end
else
begin
print 'za mało akcjki w portfelu, zmniejsz liczbe'
end
END

Brak komentarzy:

Prześlij komentarz

 Po wielu miesiącach przerwy Czteroletnim exodusie do bloga ismartdev, który zdechł w zeszłym roku w listopadzie, na powrót wstąpiłem w ten ...