考虑:
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;
一切正常。尽管如此文档 http://msdn.microsoft.com/en-us/library/aa198007.aspx说明call
是正确的语法。
为什么EXEC
工作时CALL
才不是?
Yup.. CALL
是一个可从 ODBC 驱动程序使用的构造/语法,如您的文档所示。
T-SQL 文档中没有提及CALL
, only EXEC
.
它不起作用,因为它不是 T-SQL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)