0

我在 SQL Server 2008 中有一个过程

CREATE PROCEDURE dbo.testing
    @parm varchar(10),
    @parmOUT varchar(30) OUTPUT
AS
BEGIN
   SELECT @parmOUT = 'parm 1 ' + @parm
END 

我有一个查询可以在 Codeigniter 框架字中访问此过程。我使用 sqlsrv_driver 数据库。

$param1 = 'test';
$param2 = '1';
$this->db->query("dbo.testing ?,  ?", array($param1, $param2)); 

我已经执行了该过程,但我无法检索第二个参数值 ($param2)。

任何人都知道得到这个第二个参数值?

谢谢b4

4

2 回答 2

0

在您的存储过程中,您正在传递一个输入参数和一个指定的输出参数。所以SP应该像下面这样修改

ALTER PROCEDURE dbo.testing
@parm varchar(10),
@parmOUT varchar(30) OUTPUT
AS
BEGIN
SELECT  'parm 1 ' + @parm
END  

现在为了执行上面的 SP 你只需要传递一个输入参数

 declare @out varchar(30)
 exec testing 'test', @parmOUT=@out OUTPUT

您只需将结果检索为

 param1test

没有第二个参数可以从您的 SP 中检索。您将获得的唯一值是您在选择查询中指定的值。

于 2012-06-18T07:24:02.520 回答
0
$sql = 'DECLARE @RETURNV VARCHAR(20)
EXEC dbo.testing ?, @parmOUT= @RETURNV OUTPUT
SELECT @RETURNV AS RETURNV';
$param = array(
  "This is first param"
);
$temp = $this->db->query($sql, $param);
$result = $temp->result_array();
echo "<pre>".print_r($result, true)."</pre>";
于 2019-03-07T07:12:11.250 回答