我想问一下如何在IF statement
中使用SQL
进行条件检查,类似于下面的例子。
if (select* from table where id = @id) = 1 --if this returns a value
insert statement
else
update statement
go
或类似的东西,如使用存储过程...
if (exec SP_something 2012, 1) = 0
insert statement
else
update stement
或者可能在sql语句中使用UDF,如...
if (select dbo.udfSomething(1,1,2012)) = 0
insert statement
else
update statement
go
(1)使用语句块
IF
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
BEGIN
PRINT 'There are 5 Touring-3000 bikes.'
END
ELSE
BEGIN
PRINT 'There are Less than 5 Touring-3000 bikes.'
END ;
(2)调用存储过程。
DECLARE @compareprice money, @cost money
EXECUTE Production.uspGetList '%Bikes%', 700,
@compareprice OUT,
@cost OUTPUT
IF @cost <= @compareprice
BEGIN
PRINT 'These products can be purchased for less than
$'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'
END
ELSE
PRINT 'The prices for all products in this category exceed
$'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
更多例子:
你会想做这样的事情:
IF (SELECT COUNT(*) FROM Table WHERE ID = @id) = 1
BEGIN
UPDATE Table SET Name = 'Name' WHERE ID = @id
END
ELSE
BEGIN
INSERT INTO Table (Name) VALUES ('Name');
END
以下示例将帮助您使用IF-ELSE
实现条件语句
CREATE PROCEDURE SetEngineerStock
@EngineerId INT,
@PartNumber CHAR(8),
@NewUnitsHeld DECIMAL(6,2)
AS
BEGIN
SET NOCOUNT ON;
-- Does stock entry exist?
IF EXISTS(SELECT * FROM EngineerStock
WHERE EngineerId = @EngineerId AND PartNumber = @PartNumber)
-- Yes, update existing row
UPDATE EngineerStock
SET UnitsHeld = @NewUnitsHeld
WHERE EngineerId = @EngineerId AND PartNumber = @PartNumber
ELSE
-- No, insert new row
INSERT INTO EngineerStock
VALUES(@EngineerId, @PartNumber, @NewUnitsHeld)
END