Проблема с выполнением хранимой процедуры с PHP на Microsoft SQL SERVER

Я использую структуру воспламенителя кода. И я пытался выполнить хранимую процедуру (без параметров), которую я написал на Microsoft SQL Server 2008 с PHP, но получаю сообщение об ошибке. Эта хранимая процедура хорошо работает на Microsoft SQL Server без ошибок. Я использую sqlsrv в качестве драйвера, и у меня есть версия PHP 5.2, если это поможет.

Это ошибка, которую я получаю

Error Number: 01000
[Microsoft][SQL Server Native Client 10.0][SQL Server]Executing SQL directly; no cursor
Exec sp_test

Ниже приведена часть кода, который у меня есть

function index(){
  $this->load->database();
  $query=$this->db->query("Exec sp_test");
  var_dump($query->result());
}

Я заменяю фактический запрос фактическим запросом, и он работает, но не с вызовом sp. Любая помощь будет оценена по достоинству, я так долго пытался это сделать, и я не могу заставить его работать. Спасибо


person user3547086    schedule 04.04.2015    source источник


Ответы (4)


Я столкнулся с той же проблемой. Удаление «EXEC» сработало для меня.

$query = $this->db->query("имя_процедуры, параметр_1, параметр_2");

person Suhail    schedule 30.04.2015
comment
привет, сэр, я следовал вашему решению, но мне все еще не удавалось вызвать мою хранимую процедуру, которая принимает 4 параметра, но когда я запускаю хранимую процедуру в окне запроса mssql, у нее есть данные, которые нужно вернуть return $this-›db-› запрос( pr_proc_1 153, 1, 'N', 'N' )-›result();. он возвращает No Content со статусом 204 - person Lymuel; 21.06.2017

Я спотыкался с подобной ошибкой в ​​течение некоторого времени. Дело в том, что выполнение сохраненной процедуры вернуло код состояния 01000/0, что является не ошибкой, а предупреждением, и до сих пор неизвестно, почему оно возвращается.

В любом случае, дело в том, что SP был простым выбором, и всякий раз, когда я запускал его с помощью инструмента запросов, выбор работал просто отлично, даже вызывая этот выбор из php с codeigniter, значения возвращались правильно, но когда я пытался использовать хранимая процедура, она продолжает давать сбой.

Наконец-то это заработало, и решение состояло в том, чтобы просто пометить, чтобы предупреждения не возвращались как ошибки. Вот пример кода:

 $sp = "MOBILE_COM_SP_GetCallXXX ?,?,?,?,?,?,?,?,?,? "; //No exec or call needed

 //No @ needed.  Codeigniter gets it right either way
 $params = array(
            'PARAM_1' => NULL,
            'PARAM_2' => NULL,
            'PARAM_3' => NULL,
            'PARAM_4' => NULL,
            'PARAM_5' => NULL,
            'PARAM_6' => NULL,
            'PARAM_7' => NULL,
            'PARAM_8' => NULL,
            'PARAM_9' => NULL,
            'PARAM_10' =>NULL);

 //Here's the magic...
 sqlsrv_configure('WarningsReturnAsErrors', 0);

 //Even if I don't make the connect explicitly, I can configure sqlsrv
 //and get it running using $this->db->query....

 $result = $this->db->query($sp,$params);

Вот и все. Надеюсь, это помогло

person Ulises Burlando    schedule 24.05.2015
comment
Подобный случай произошел со мной на тестовой платформе (не на других платформах!). Но не с помощью хранимой процедуры, а с помощью простого «ОБНОВЛЕНИЯ». Вероятно, из-за конфигурации sql_server. Не имея возможности изменить конфигурацию, это решение было отличным обходным путем. Т - person MarcM; 16.06.2017

У меня также была аналогичная проблема при подключении к MS SQL Server 2008 с использованием драйвера sqlsrv. Моя проблема была решена с помощью следующего кода:

$result = $this->db->query("PROCEDURE_NAME {$param_1}, {$param_2}")
                   ->result_array();

У меня это помогает кому-то там =]

person Rashy    schedule 14.05.2015
comment
Помог мне! Спасибо! знак равно - person ourmandave; 22.12.2016

Я столкнулся с получением данных из хранимой процедуры сервера sql в codeignitor, но, наконец, разрешил ее.

    $sync= $this->load->database('sync', TRUE);
    $query = $sync->query('PROCEDURE_NAME')->result_array();
    echo '<pre>';
    print_r($query);
person Ranjeet Kumar    schedule 19.12.2015