在使用sqlsrv扩展的PHP的documentation for calling a SQL Server stored procedure with parameters中,它使用了一种奇怪的语法:
{call SubtractVacationHours( ?, ?)}
我期望的是:
EXEC SubtractVacationHours ?, ?;
在SQL Server documentation for executing a T-SQL stored procedure中,它只允许EXEC | EXECUTE作为命令字。所以我认为查询会导致错误。
您当然可以使用指定参数的EXEC SubtractVacationHours SQL调用sqlsrv_query
(即将问号替换为值)。
经过对参数化查询的进一步研究后,似乎'CALL'来自于call it through an ODBC provider。
第二个EXEC语法实际上会起作用吗?或者通过sqlsrv驱动程序进行参数化存储过程调用是否必须使用ODBC CALL语法?
答案 0 :(得分:0)
我已经使用我的代码和两种形式的语法工作进行了测试。根据{{3}}上的这篇IIS博客文章,建议使用CALL语法:
我们现在可以使用规范调用语法调用该存储过程, 推荐用于使用SQL Server 2005驱动程序的存储过程 PHP:
$sql = '{? = CALL CreateProduct (?, ?, ?, ?)}';