简体   繁体   English

Codeigniter-SQL Server 2008:如何在存储过程中获取参数输出

[英]Codeigniter - SQL Server 2008 : How to get parameter output in Store Procedure

I've a procedure in SQL Server 2008 我在SQL Server 2008中有一个过程

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

and i have a query to access this procedure in Codeigniter frameword. 我有一个查询以使用Codeigniter框架字访问此过程。 i use sqlsrv_driver database. 我使用sqlsrv_driver数据库。

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

i've execute the procedure, but i can't retrieve 2nd parameter value ($param2). 我已经执行了该过程,但是无法检索第二个参数值($ param2)。

Anyone have idea to get this 2nd parameter value?? 任何人都想获得第二个参数值?

thanks b4 谢谢b4

In your Stored Procedure ,you are passing one input parameter and the specifying one output parameter . 在存储过程中,您要传递一个输入参数和指定一个输出参数。 So the SP should be modified like the one below 因此,应该像下面这样修改SP

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

Now in order to execute the above SP you need to pass just one input parameter 现在,为了执行上面的SP,您只需要传递一个输入参数

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

You will just retrieve the result as 您将只检索结果为

 param1test

There is no second parameter which you can retrieve from your SP .The only value which you will get is the one which you have specified in your select query . 没有第二个参数可以从SP中检索。唯一的值就是在select查询中指定的值。

$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>";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM