回答

收藏

T-SQL中的CALL和EXEC有什么区别?

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-14

考虑:
5 F/ v5 b' @- D5 g* p0 K+ l) v; hCREATE PROCEDURE LowerCityDiscounts @city VARCHAR(45),@decrease DECIMAL(10,2) ASBEGIN    BEGIN TRANSACTION;    UPDATE Customers SET discnt = discnt - @decrease    WHERE Customers.city = @city;    UPDATE Customers SET discnt = 0    WHERE Customers.city = @city AND discnt 我试图通过以下方式调用这个过程:
! S& x1 B6 l0 UCALL LowerCityDiscounts 'Cleveland',5;但这只会发生& F5 @: C% `4 z0 F4 }4 q$ E- Z
Msg 102,Level 15,State 1,Line 1Incorrect syntax near 'Cleveland'.但是,如果我把它改成
$ w% u2 z9 h1 D, H! q# VEXEC LowerCityDiscounts 'Cleveland',5;一切正常。尽管文档指出了这一点call语法正确,但仍然可行。
3 I2 \0 f. S7 o4 a3 g为什么不呢?EXEC工作CALL?
9 w* U) w6 I9 k6 e- n4 P, r: o                                                                ) s+ ~4 q- ]7 L
    解决方案:                                                                $ ~% i! O" I' M
                                                                CALL如您的文档所述,Yup ..是可从ODBC结构/语法用于驱动程序。
0 h' P$ k, J9 }5 z还有的T-SQL文件中没有提到CALL,只EXEC。" _# e& o/ h" ?/ Q9 D( d+ i
它不起作用,因为它不起作用T-SQL。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则