[英]SQL Server : create and call stored procedure
我该如何正确写呢?
我正在编写一个存储过程,该过程将使用( StockName, NewOpenPrice, NewClosePrice
),并且如果库存名称不存在StockName, NewOpenPrice, NewClosePrice
新记录添加到表中(如图所示)。 如果股票名称存在,则将使用新插入的价格更新OpenPrice和ClosePrice。 最后我要调用存储过程
这就是现在的样子
CREATE PROCEDURE p_updatestock
(
@StockName VARCHAR(50),
@OpenPrice MONEY,
@ClosePrice MONEY)
AS
Declare @NewOpenPrice MONEY
Declare @NewClosePrice MONEY
UPDATE Stocks
SET StockName = @StockName
SET @StockName = @rowcount
UPDATE Stocks
SET NewOpenPrice = @NewOpenPrice
WHERE OpenPrice = @NewOpenPrice
SET @NewOpenPrice = @rowcount
IF (@StockName EXIST THEN OpenPrice)
UPDATE Stocks
SET NewClosePrice = @NewClosePrice
WHERE ClosePrice = @NewClosePrice
SET @NewClosePrice = @rowcount
IF (@StockName EXIST THEN ClosePrice)
我觉得这就是你所需要的
CREATE PROCEDURE P_updatestock (@StockName VARCHAR(50),
@OpenPrice MONEY,
@ClosePrice MONEY)
AS
BEGIN
IF EXISTS (SELECT 1
FROM Stocks
WHERE StockName = @StockName)
UPDATE Stocks
SET ClosePrice = @ClosePrice,
Openprice = @Openprice
WHERE StockName = @StockName
ELSE
INSERT INTO stocks
(StockName,
Openprice,
ClosePrice)
VALUES (@StockName,
@Openprice,
@ClosePrice)
END
或者使用Merge
代替If-Else
MERGE Stocks AS target
USING (SELECT @StockName,
@OpenPrice,
@ClosePrice) AS source (StockName, OpenPrice, ClosePrice)
ON ( target.StockName = source.StockName )
WHEN MATCHED THEN
UPDATE SET ClosePrice = source.ClosePrice,
Openprice = source.Openprice
WHEN NOT MATCHED THEN
INSERT (StockName,
Openprice,
ClosePrice)
VALUES (source.StockName,
source.Openprice,
source.closeprice)
执行
exec P_updatestock 'PFE',22.34,32.45
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.