SQL Server: crea y llama al procedimiento almacenado

¿Cómo escribo esto correctamente?

Estoy escribiendo un procedimiento almacenado que tomará ( StockName, NewOpenPrice, NewClosePrice ) y agregue un nuevo logging a la tabla (que se muestra en la image), SI el nombre del file no EXISTE. SI el nombre de file EXISTA, entonces OpenPrice y ClosePrice se actualizarán con los precios recién insertados. Finalmente quiero llamar al procedimiento almacenado

Esto es lo que parece ahora

 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) 

enter image description here

Creo que esto es lo que necesitas

 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 

O use Merge lugar de 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) 

Ejecutar

  exec P_updatestock 'PFE',22.34,32.45