Procedura
tworząca zlecenie (transakcje) kupna akcji
Parametry
wejściowe
@user_id
int,
@numberBuyStock
int,
@stock_name
varchar(10)
BEGIN
--pomocnicze
declare
@wallet_id
int
declare
@stock_id
int
declare
@stockN_id
int
declare
@stockPrice
money
declare
@walletMoneyLimit
money
--wyszukanie
portfela oraz akcji
select
@wallet_id
=
wal_id
from
UserTable
where
usr_id
=@user_id
select
@walletMoneyLimit
=
wal_MoneyLimit
from
Wallet
where
wal_id
=
@wallet_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
--
sprawdzenie portfela
declare
@result
money
declare
@PriceTransaction
money
set
@result
=
@numberBuyStock
*
@stockPrice
if(@result
<=
@walletMoneyLimit)
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,@numberBuyStock,1,@stockPrice,2,0,GETDATE(),@result)
--sciagniecie
kasy z portfela i dopisanie do transakcji
set
@PriceTransaction
=
@walletMoneyLimit
-
@result
update
Wallet
set
wal_MoneyLimit
=
@PriceTransaction
where
wal_id
=
@wallet_id
end
else
begin
print
'zamałe
srodki na zakup akcji, zmniejsz liczbe akcji'
end
END
Wersja rozszerzona o ustawienie ceny akcji przez użytkownika, zamiast pobrania ceny z tabeli Stock oraz zastosowanie procedury piszącej do tabeli log, dodatkowo ustalenie daty ważności zlecenia.
Wersja rozszerzona o ustawienie ceny akcji przez użytkownika, zamiast pobrania ceny z tabeli Stock oraz zastosowanie procedury piszącej do tabeli log, dodatkowo ustalenie daty ważności zlecenia.
Parametry wejściowe:
@user_id int,
@stock_name varchar(10),
@priceStatusId int,
@stockPrice money,
@dataEnd datetime
@dataEnd datetime
)
AS
BEGIN
--pomocnicze
declare
@wallet_id int
declare @stock_id
int
declare
@stockN_id int
declare
@walletMoneyLimit money
declare
@userLogin varchar(50)
--wyszukanie portfela oraz akcji
select
@wallet_id = wal_id from
UserTable where usr_id =@user_id
select
@walletMoneyLimit = wal_MoneyLimit from Wallet where
wal_id = @wallet_id
select
@stockN_id = stockN_id from
StockName where stockN_name = @stock_name
select @stock_id
= stock_id from
Stock where stockN_id =
@stockN_id
-- sprawdzenie portfela
declare @result money
declare
@PriceTransaction money
set @result = @numberBuyStock *
@stockPrice
if(@result
<= @walletMoneyLimit)
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_dataEnd],[mark_TransactionPrice],[priceStatus_id])
VALUES
(@stock_id,@wallet_id,@numberBuyStock,1,@stockPrice,2,0,GETDATE(),@dataEnd,@result,@priceStatusId)
--sciagniecie kasy z portfela i dopisanie do transakcji
set
@PriceTransaction = @walletMoneyLimit - @result
update Wallet set
wal_MoneyLimit
= @PriceTransaction
where
wal_id
= @wallet_id
end
else
begin
select @userLogin =
usr_login from UserTable where usr_id =
@user_id
exec pAddInfoToLog 2,@userLogin,'zamałe srodki na zakup
akcji, zmniejsz liczbe akcji'
end
END
Brak komentarzy:
Prześlij komentarz