xem xét:Sự khác nhau giữa CALL và EXEC trong T-SQL là gì?
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;
Tôi cố gắng để gọi thủ tục này với:
CALL LowerCityDiscounts 'Cleveland', 5;
nhưng điều này chỉ sản xuất
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Cleveland'.
Tuy nhiên, nếu tôi thay đổi mọi thứ để
EXEC LowerCityDiscounts 'Cleveland', 5;
mọi thứ đều hoạt động tốt. Điều này mặc dù rằng the documentation nói rằng call
là cú pháp đúng.
Tại sao EXEC
hoạt động khi CALL
không?
Tài liệu được liên kết liên quan đến trình điều khiển ODBC, tức là 'CALL' là một cấu trúc ODBC. Bạn đang sử dụng ODBC? –
Một là từ khóa tsql, cái kia không phải là cơ bản là – Peter
@KierenJohnstone: Vâng, tôi đang sử dụng ODBC bên trong ứng dụng, nhưng tôi đang thử nghiệm mọi thứ bên trong SQL Server Management Studio. –