2

以下の例のように、IF statementinを使用して条件チェックを実行する方法をお聞きしたいと思います..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
4

3 に答える 3

5

(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)))+'.'

その他の例:

MSDN 1 MSDN 2

于 2013-01-25T01:23:44.627 に答える
1

あなたはこのようなことをしたいと思うでしょう:

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
于 2013-01-25T00:31:46.697 に答える
1

次の例は、次を使用して条件文を実装するのに役立ちます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
于 2013-01-25T07:09:27.067 に答える