Я изо всех сил пытаюсь заставить это работать.
У нас есть сайт на базе Codeigniter, который вскоре переходит на новый сервер.Меня попросили удалить несколько прямых вызовов mssql_ * в коде для этого.В общем, это просто.
Однако есть пара мест, где система использует выходные параметры, и я не могу заставить их что-либо возвращать.Повторные поиски в сети не дали ничего, что работает.
Сокращенный до основ, тест сохранял процедуру: -
CREATE PROCEDURE [dbo].[output_test](
@p_status CHAR(1) OUTPUT
) AS
BEGIN
SET @p_status = '2'
END
Попытка использовать подпрограммы Codeigniter с транзакциями: -
$p_status = 0;
$query = 'EXEC dbo.output_test ?';
$this->db->trans_start();
$q = $this->db->query($query, array(&$p_status));
echo "*****".$p_status."*****";
$query = $this->db->query('SELECT @p_status AS p_status');
$this->db->trans_complete();
echo "*****".$p_status."*****";
if(isset($query->num_rows) && $query->num_rows > 0)
{
foreach($query->result() as $arr)
{
$return['status'] = $arr->p_status;
}
}
Это просто дает мне Должен объявить скалярную переменную "@p_status" .
Я попробовал почти все альтернативы этому в довольноограниченный драйвер Codeignitor без каких-либо улучшений.Неважно, будет ли выходной параметр передан по ссылке или по значению.
Любые предложения?
Я понимаю, что мог бы просто ВЫБРАТЬ переменную в этом демонстрационном случае, но это невозможно в полном объемепроблема, так как я пытаюсь вернуть набор результатов также из некоторых процедур, и чтобы избежать возврата нескольких наборов результатов, я хотел бы изменить их так, чтобы они возвращали статус как выходную переменную, а не как второй набор результатов.