我在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
答案 0 :(得分: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中检索到第二个参数。您将获得的唯一值是您在选择查询中指定的值。
答案 1 :(得分: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>";