使用SQLSRV调用存储过程

时间:2013-11-12 15:03:14

标签: php sql-server iis sqlsrv

所以我有一个我想调用的存储过程,它将一个参数作为整数并返回10个公司。这是MSSQL http://pastebin.com/shhakP81

中的SP

这是我的sql语句

$companiesSQL = "{call WEBgetCompanylistByIndIDTen( ? )}";

参数

$params = array(array($industryID, SQLSRV_PARAM_IN));

查询

$companiesStmt = sqlsrv_query($companiesHandle, $companiesSQL, $params);

并尝试打印出结果会让我错误地说明

  

sqlsrv_fetch_object()期望参数1为资源,布尔值为

我知道 $ companiesStmt 应该是一个语句资源,但它是一个布尔值,这意味着查询失败。

while($row = sqlsrv_fetch_object($companiesStmt))
{
    echo $row->COM."<br />";
}

我知道连接有效,因为我能够在该表中调用一个没有参数并获得结果的不同存储过程。 这意味着错误只能在 $ companiesSQL $ params

我还想提一下,我在谷歌的前4-5页尝试了无数不同的想法,包括微软的例子,从SP(http://technet.microsoft.com/en-us/library/cc626303(v=sql.105).aspx)获得结果,甚至是PHP的官方网站及其评论。

*编辑 我还要提一下,如果我登录到MSSQL Server Management studio,并从那里运行存储过程,那么它就可以工作。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:-1)

首先打开错误报告。确保您具有足够的权限来使用此存储过程。检查用于创建连接的帐户是否具有执行存储过程和访问存储过程使用的所有资源的权限。 我希望这有帮助,当我开始使用SQL服务器时,我遇到了类似的问题。而不是失败,它返回一个空的结果集。

**修改

答案 1 :(得分:-1)

我遇到了类似的错误。

尝试更改此行:

$companiesStmt = sqlsrv_query($companiesHandle, $companiesSQL, $params);

对此没有参数:

$companiesStmt = sqlsrv_query($companiesHandle, $companiesSQL);

答案 2 :(得分:-1)

尝试将OUT参数添加到$ params数组。

在此查看参考资料: http://forums.devshed.com/php-development-5/php-mssql-sqlsrv-stored-procedure-943084.html