【发布时间】:2013-07-29 12:13:31
【问题描述】:
我们已经在运行 MYSQL 的 CakePHP 中开发了我们的应用程序,并且运行良好。 PHP 版本是 5.4.16,Apache 2.4.4,最新的 XAMP。 CakePHP 版本:2.3.0
我们在 MSSQL 中也已经有了类似的数据库。现在我们也想用这个 MSSQL 运行我们的应用程序。
我们为此使用 php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_ts.dll 作为 MSSQL 驱动程序。它的 sql server 2005。
问题是当我运行某些 sql server 存储过程时,cakephp 什么也没运行。我可以在 SQL 分析器中看到存储过程调用的语法很好,并且所有参数都是正确的。我还可以在分析器中看到这个存储过程在 SQL 服务器中运行得非常好。但是 cakephp 没有显示任何内容。
相应的 MySql 例程工作正常, cakephp 返回正确的数据。
这是存储过程后跟的 php 代码。
$getCoulmnsInfo =$this->Maintable->query('exec GetColumns_Information 0');
print_r($getCoulmnsInfo); // This prints nothing, $getCoulmnsInfo is empty
对应的SQL server存储过程为
ALTER PROCEDURE [dbo].[GetColumns_Information]
@GroupOverride midsys_boolean AS
IF ( @GroupOverride = 1 )
BEGIN SELECT columns_id, columns_columntypesid, columns_columnname,
columns_usercolumnname, 1 FROM ColumnsTable ORDER BY columns_id RETURN END
SELECT columns_id, columns_columntypesid, columns_columnname,
columns_usercolumnname, columns_columnsettings
FROM ColumnsTable
ORDER BY columns_id
现在,如果将上面的内容修改为如下,那么它可以正常工作并返回正确的结果。基本上我删除了中间的几行。
ALTER PROCEDURE [dbo].[GetColumns_Information]
@GroupOverride midsys_boolean AS
SELECT columns_id, columns_columntypesid, columns_columnname,
columns_usercolumnname, columns_columnsettings
FROM ColumnsTable
ORDER BY columns_id
另一个不工作的存储过程示例。
ALTER PROCEDURE [dbo].[MainStatusesFlow_Next]
@MainID int AS
DECLARE @MainStatusesID int
SELECT @MainStatusesID = main_mainstatusesid
FROM MainTable
WHERE main_id = @MainID
IF EXISTS ( SELECT * FROM MainStatusesTable MainStatuses INNER JOIN
MainStatusesFlowTable MainStatusesFlow ON MainStatuses.mainstatuses_id =
MainStatusesFlow.mainstatusesflow_nextstatusid WHERE
MainStatusesFlow.mainstatusesflow_statusid = 10 )
BEGIN SELECT MainStatuses.mainstatuses_name FROM MainStatusesTable MainStatuses
INNER JOIN MainStatusesFlowTable MainStatusesFlow ON MainStatuses.mainstatuses_id =
MainStatusesFlow.mainstatusesflow_nextstatusid WHERE
MainStatusesFlow.mainstatusesflow_statusid = 10 RETURN END
SELECT mainstatuses_name, 1
FROM MainStatusesTable
WHERE mainstatuses_id = 10
如果我再次删除中间部分,它就会起作用。
其余的存储过程都工作得很好。
任何帮助将不胜感激。
干杯
【问题讨论】:
标签: php sql-server cakephp cakephp-2.0 cakephp-model