2017-09-27 48 views
1

我有以下存储过程:拨打Laravel 5.5存储过程使用SQL Server与输出

declare @CodigoRet int 

exec Generator 'LancaContaContabil', @Codigo = @CodigoRet output 

Select @CodigoRet 
  • OBS:在LancaContaContabil是我的表和Codigo是该表
的PK

我试图在Laravel 5.5中调用此过程,但它给了我错误:“查询的活动结果不包含字段”:

$results = DB::select(DB::raw('DECLARE @CodigoRet INT; execute Generator 
\'LancaContaContabil\', @Codigo = @CodigoRet OUTPUT;')); 
echo $results; 
die; 
使用变形而不dbraw

同样的错误:

$results = DB::select('DECLARE @CodigoRet INT; EXEC Generator   
\'LancaContaContabil\', @Codigo = @CodigoRet OUTPUT;'); 
echo $results; 
die; 

with语句也试过,但回报始终是1:

$results = DB::statement('DECLARE @CodigoRet INT; EXEC Generator 
\'LancaContaContabil\', @Codigo = @CodigoRet OUTPUT;'); 
echo $results; 
die; 

编辑:我创建了名为 'testeproc' 下的步骤和现在我已经试过了,与上面相同的错误:

$results = DB::select('EXECUTE testeproc'); 
echo $results; 
die; 

我在做什么错?

回答

1

试试这个:

无参数:

$results = DB::select('EXEC your_stored_procedure'); 

威特参数

$results = DB::select('exec your_stored_procedure("parameter1", "parameter2",..)'); 

$results = DB::select('exec your_stored_procedure(?,?,..)',array($parameter1,$parameter2)); 
+0

感谢您的答复亚历山德罗,但我已经尝试过,错误是相同的“查询的活动结果不包含任何字段”。现在我刚创建了一个简单的程序来测试,只有一个选择和它的工作正常。但是输出的一个仍然失败。 – fjurr

0

我刚刚才整理出来。我将在这里发布可以帮助其他人解决同样问题的解决方案。

$dbh = DB::connection()->getPdo(); 
$sth = $dbh->prepare("SET NOCOUNT ON; EXEC ProcLancaContaContabil"); 
$sth->execute(); 
$codigo = $sth->fetchAll(PDO::FETCH_COLUMN, 0); 

诀窍是在调用过程之前使用“SET NOCOUNT ON”。 我发现这个here