considerar:¿Cuál es la diferencia entre CALL y EXEC en T-SQL?
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;
Traté de llamar a este procedimiento con:
CALL LowerCityDiscounts 'Cleveland', 5;
pero esto sólo se produce
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Cleveland'.
Sin embargo, si cambio de cosas que
EXEC LowerCityDiscounts 'Cleveland', 5;
todo funciona bien Esto a pesar de que the documentation indicando que call
es la sintaxis correcta.
¿Por qué EXEC
funciona cuando CALL
no?
La documentación vinculada se refiere al controlador ODBC, es decir, 'CALL' es una construcción ODBC. ¿Estás usando ODBC? –
Una es una palabra clave tsql, la otra no es básicamente – Peter
@KierenJohnstone: Bueno, estoy usando ODBC dentro de la aplicación, pero estoy probando cosas dentro de SQL Server Management Studio. –