Как вызвать хранимую процедуру в CodeIgniter ИСПОЛЬЗОВАНИЕ SQL SERVER

Я создаю свое приложение, используя Codeigniter и SQL-сервер в качестве базы данных (я использую PHP-расширение SQLSRV для подключения к SQL). Проблема возникает, когда я пытаюсь вызвать хранимые процедуры:

$query = $this->db->query(
          "EXECUTE verificacion_fechas '".$codigo."',".$estado.",'".$llave_maestra."','".$fecha_actual."'"); 

Другой способ, которым я пытался создать запрос с меньшим количеством данных, заключается в следующем, однако он генерирует ошибку:

Error Number: 01000 [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Ejecutando SQL directamente, sin cursor. EXECUTE provando15 34,2,'key05','2015-07-22'

Я действительно не знаю, что я делаю неправильно. Кто-нибудь может мне помочь?


person Diego Warthon Hurtado    schedule 22.07.2015    source источник
comment
непонятно, что вы спрашиваете. Можете ли вы структурировать свой вопрос: 1) ПРОБЛЕМА, 2) КОД, 3) ОШИБКА, 4) ЦЕЛЬ?   -  person Nathan    schedule 22.07.2015
comment
извините, мой вопрос об ошибке   -  person Diego Warthon Hurtado    schedule 22.07.2015
comment
это мой совет ::::::: $query=$this-›db-›query(EXECUTE verificacion_fechas('.$codigo.',.$estado.,'.$llave_maestra.','.$fecha_actual. ')); и это моя ошибка ::::::::::::::: Номер ошибки: 01000 [Microsoft] [Драйвер 11 ODBC для SQL Server] [SQL Server] Ejecutando SQL Directamente, курсор греха. ВЫПОЛНИТЬ провандо15 34,2,'key05','2015-07-22'   -  person Diego Warthon Hurtado    schedule 22.07.2015


Ответы (3)


убери слово Execute и все заработает.

$query = $this->db->query(
      "verificacion_fechas '".$codigo."',".$estado.",'".$llave_maestra."','".$fecha_actual."'");
person steve    schedule 23.07.2015

Вот пример того, как вызвать СОХРАНЕННУЮ ПРОЦЕДУРУ MYSQL в codeigniter

$this->db->query('CALL procedure_name());
person morz    schedule 23.01.2017
comment
да, потому что именно так мы называем SP в CI. - person morz; 23.01.2017

Вот мое решение:

первый способ(если вы не используете переменную);

$query=$this->MSSQL->query("EXEC ProcedureName");

второй способ(если вы используете переменную);

$query =$this->MSSQL->query("EXEC ProcedureName '$var1','$var2','$var3' ");

or

$query =$this->MSSQL->query("EXEC ProcedureName @varName1='$var1',@varName2='$var2',@varName3='$var3' ");

Примечание: если вы получаете результат, подобный пустому массиву, добавьте SET NOCOUNT ON после BEGIN в вашей процедуре.

person Cosmos    schedule 14.06.2019