使用Codeigniter访问TSQL输出变量

时间:2019-06-04 10:57:17

标签: php sql-server codeigniter

我正在努力使其正常工作。

我们有一个基于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驱动程序中,我几乎尝试了所有替代方法,而没有任何改进。输出参数是否通过引用或值传递都没有关系。

有什么建议吗?

我意识到我可以在这个演示案例中选择var,但是在整个问题中是不可能的,因为我正试图从某些过程中返回结果集,并避免返回多个结果集,我想修改它们以将状态返回为输出var而不是第二个结果集。

0 个答案:

没有答案