【问题标题】:Codeigniter - SQL Server 2008 : How to get parameter output in Store ProcedureCodeigniter - SQL Server 2008:如何在存储过程中获取参数输出
【发布时间】:2012-06-18 06:54:29
【问题描述】:

我在 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

【问题讨论】:

    标签: php sql-server codeigniter


    【解决方案1】:

    在您的存储过程中,您传递了一个输​​入参数和一个指定的输出参数。所以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 中检索第二个参数。您将获得的唯一值是您在选择查询中指定的值。

    【讨论】:

    • 感谢您的回答,但查询后没有结果值。
    • 您能否更具体地说明执行存储过程时需要得到什么结果
    • 感谢 4 您的回复...我想将输出参数放入 php 中的变量 $param2,而不是查询中的 @out。
    • @MochZawaruddinAbdullah:我不知道如何在 PHP 中执行此操作,但我编写的 exec 语句仅检索输出参数。为了存储输出值,您需要声明一个变量输出关键字,然后给它赋值
    • 它@MochZawaruddinAbdullah 它会有助于你的社区可以回答你是如何解决它的。
    【解决方案2】:
    $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>";
    

    【讨论】:

    • 每当您回答时,请尝试在其周围加上一些解释,以便每个人都能准确地了解您在回答中想要传达的内容。
    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多