は考えてみましょう:T-SQLのCALLとEXECの違いは何ですか?
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;
が、私は
EXEC LowerCityDiscounts 'Cleveland', 5;
に物事を変更する場合にのみ、しかし
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Cleveland'.
を生成します
すべて正常に動作します。これにもかかわらず、call
が正しい構文であることを示すthe documentationがあります。
なぜEXEC
はCALL
の場合に機能しますか?
リンクされたドキュメントはODBCドライバに関連しています。つまり、 'CALL'はODBC構造です。あなたはODBCを使用していますか? –
1つはtsqlキーワード、もう1つは基本的に – Peter
です。@KierenJohnstone:私はアプリケーション内でODBCを使用していますが、SQL Server Management Studioの中でテストしています。 –