title: What is the difference between CALL and EXEC in T-SQL?
body: <p>Consider:</p>
  
  <pre><code>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 &lt; 0
      COMMIT;
  END;
  </code></pre>
  
  <p>I tried to call this procedure with:</p>
  
  <pre><code>CALL LowerCityDiscounts 'Cleveland', 5;
  </code></pre>
  
  <p>but this only produces</p>
  
  <pre class="lang-none prettyprint-override"><code>Msg 102, Level 15, State 1, Line 1
  Incorrect syntax near 'Cleveland'.
  </code></pre>
  
  <p>Yet, if I change things to</p>
  
  <pre><code>EXEC LowerCityDiscounts 'Cleveland', 5;
  </code></pre>
  
  <p>everything works fine. This despite that <a href="http://msdn.microsoft.com/en-us/library/aa198007.aspx" rel="noreferrer">the documentation</a> stating that <code>call</code> is the right syntax.</p>
  
  <p>Why does <code>EXEC</code> work when <code>CALL</code> does not?</p>