我想知道这是否是使用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)
我只使用一些参数,因为其他参数不是必需的。
这是对的吗?
答案 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我觉得这个方法应该有用..让我知道会发生什么,因为我也想知道它是如何完成的。