Quelle est la différence entre CALL et EXEC dans T-SQL?

Considérer:

CREATE PROCEDURE LowerCityDiscounts @city VARCHAR(45), @decrease DECIMAL(10,2) AS
BEGIN
    BEGIN TRANSACTION;
    UPDATE Customers SET discnt = discnt - @decrease
    WHERE Customers.city = @city;

    UPDATE Customers SET discnt = 0
    WHERE Customers.city = @city AND discnt < 0
    COMMIT;
END;

J'ai essayé d'appeler cette procédure avec:

CALL LowerCityDiscounts 'Cleveland', 5;

mais cela ne produit

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Cleveland'.

Encore, si j'ai changer les choses pour

EXEC LowerCityDiscounts 'Cleveland', 5;

tout fonctionne bien. Ce, malgré que la documentation indiquant que call est la bonne syntaxe.

Pourquoi ne EXEC travail quand CALL ne l'est pas?

source d'informationauteur Billy ONeal | 2011-10-21