使用CakePHP运行SQL Server存储过程

时间:2014-10-10 02:10:51

标签: php sql-server cakephp stored-procedures

我想知道这是否是使用cakePHP运行microsoft sql server存储过程的正确语法。在CakePHP中执行存储过程时,这是正确的语法吗?

$this->Main->query("Exec uspGetVendorVehicleManifest '1/6/2014', 'wali.americantour', @pcolVehicleVendorIDInt = 1,@pRouteFrom = 0, @pRouteTo = 0");

存储过程具有以下参数:

    @pDate              AS DATE,
    @pUserID            AS VARCHAR(50),
    @pRegionIDInt       AS INT,
    @pPortIDInt         AS INT,
    @pcolVehicleVendorIDInt AS INT,

    @pStartRow          AS INT,
    @pMaxRow            AS INT,
    @pLoadType          AS INT,
    @pOrderby           AS VARCHAR(20),

    @pRouteFrom         AS TINYINT,
    @pRouteTo           AS TINYINT,
    @pCityFrom          AS VARCHAR(5),
    @pCityTo            AS VARCHAR(5),
    @pStatus            AS VARCHAR(4),
    @pRole              AS VARCHAR(50)

我只使用一些参数,因为其他参数不是必需的。

这是对的吗?

2 个答案:

答案 0 :(得分:3)

我终于找到了解决方法。您可以使用exec命令,然后将值添加到您将使用的参数中。

$this->ControllerName->query("exec storedProcedure @param1 = 1");

虽然我注意到当我在cakephp上运行它时,使用php 5.5,apache服务很可能会崩溃。可能是因为我使用的是非正式的phppdo。

答案 1 :(得分:1)

尝试这样

我假设您的程序名称为uspGetVendorVehicleManifest

$query = "call uspGetVendorVehicleManifest('1/6/2014', 'wali.americantour', @pcolVehicleVendorIDInt = 1,@pRouteFrom = 0, @pRouteTo = 0)";

$result = $this->query($query);

我使用mysql的过程方法,因为在引擎盖下,cakephp使用pdo我觉得这个方法应该有用..让我知道会发生什么,因为我也想知道它是如何完成的。