PHP sqlsrv参数化存储过程T-SQL语法

时间:2012-10-10 09:17:49

标签: php sql-server stored-procedures parameterized-query

在使用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语法?

1 个答案:

答案 0 :(得分:0)

我已经使用我的代码和两种形式的语法工作进行了测试。根据{{​​3}}上的这篇IIS博客文章,建议使用CALL语法:

  

我们现在可以使用规范调用语法调用该存储过程,   推荐用于使用SQL Server 2005驱动程序的存储过程   PHP:

$sql = '{? = CALL CreateProduct (?, ?, ?, ?)}';