В чем разница между CALL и EXEC в T-SQL?

Подумайте:

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;

Я пытался вызвать эту процедуру с помощью:

CALL LowerCityDiscounts 'Cleveland', 5;

, но это дает только

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

Однако, если я изменю все на

EXEC LowerCityDiscounts 'Cleveland', 5;

все работает нормально. И это несмотря на то, что документация заявляет, что вызов является правильным синтаксисом.

Почему EXEC работает, а CALL - нет?

18
задан Billy ONeal 21 October 2011 в 07:42
поделиться