2014-10-10 2 views
2

Мне интересно, является ли это правильным синтаксисом при работе с хранимыми процедурами сервера Microsoft SQL Server с использованием cakePHP. Является ли это правильным синтаксисом при выполнении хранимой процедуры в CakePHP?Запуск хранимой процедуры сервера sql с использованием 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

Что ваш журнал сообщает вам в папке tmp/logs – justrohu

+0

@justrohu Я проверил журналы и, похоже, не существует журнала о проблеме с хранимой процедурой. – marchemike

+0

ok ... вы проверили мой ответ, это работает, потому что на моей стороне этот синтаксис работает только с разницей. Я использую mysql – justrohu

ответ

1

попробовать, как этот

Я предполагаю, что ваше имя процедуры uspGetVendorVehicleManifest

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

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

Я использую метод процедуры с MySQL, так как под капотом CakePHP использует PDO Я думаю, что этот метод должен работать .. пусть я знаю, что происходит, поскольку я также хотел узнать, как это делается.

+0

Я попробую это с этим, но если хуже, то к худшему. Я также могу создать новую хранимую процедуру. Кажется, что у cakephp есть некоторые проблемы с очень сложными хранимыми процедурами. – marchemike

+0

Я просто попробовал, и он все еще не работает. – marchemike

+0

какая ошибка дает вам ... – justrohu

2

Я наконец нашел решение этого. Вы можете использовать команду exec, а затем добавить значение к параметрам, которые вы будете использовать.

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

Хотя я заметил, что когда я запускаю его на CakePHP с PHP 5.5, то апач службы, скорее всего, авария. Наверное, потому что я использую неофициальный phppdo.

Смежные вопросы