0

SQLServer2008で手順を実行しました

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)); 

プロシージャを実行しましたが、2番目のパラメータ値($ param2)を取得できません。

この2番目のパラメータ値を取得するアイデアはありますか?

ありがとうb4

4

2 に答える 2

0

ストアド プロシージャでは、1 つの入力パラメーターを渡し、1 つの出力パラメーターを指定しています。したがって、SP は以下のように変更する必要があります。

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

上記の SP を実行するには、入力パラメータを 1 つだけ渡す必要があります。

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

次のように結果を取得するだけです

 param1test

SP から取得できる 2 番目のパラメータはありません。取得できる唯一の値は、select クエリで指定した値です。

于 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 に答える