2017-09-27 75 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