Доступ к выходным переменным TSQL с помощью Codeigniter - PullRequest
0 голосов
/ 04 июня 2019

Я изо всех сил пытаюсь заставить это работать.

У нас есть сайт на базе 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 без каких-либо улучшений.Неважно, будет ли выходной параметр передан по ссылке или по значению.

Любые предложения?

Я понимаю, что мог бы просто ВЫБРАТЬ переменную в этом демонстрационном случае, но это невозможно в полном объемепроблема, так как я пытаюсь вернуть набор результатов также из некоторых процедур, и чтобы избежать возврата нескольких наборов результатов, я хотел бы изменить их так, чтобы они возвращали статус как выходную переменную, а не как второй набор результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...