2016-09-22 18 views
2

私は最近、ストアドプロシージャの結果をフェッチするために両方を使用しました。私はfetchrow_arrayがストアドプロシージャ内で選択した行の出力を返すことに気付きました。 fetchall_arrayrefは、ストアドプロシージャの選択された行とともに、最後の行のストアドプロシージャのステータスを返します。fetchrow_arrayとfetchall_arrayrefとの違いは、ストアドプロシージャを使用するとき

なぜこの違いがあり、fetchall_arrayrefの内部でストアドプロシージャのステータスを取得しないようにする方法がありますか?

マイ手順

CREATE PROCEDURE [dbo].[check_date_proc] 
     @dateStart DATETIME 
AS 
BEGIN 
SELECT 
     check_date 
FROM 
     date_Table 

WHERE 
     data_date = @dateStart 
END; 

GO 

を保存し、私は

20160920 
0 
を返しfetchall_arrayref

20160920 

fetchrow_array戻り

exec check_date_proc '20160920'; 

このようにそれを呼び出します

ありがとう

+2

実行しているクエリがどのように表示されるか、出力の例を挙げることができますか?それは解決のために他人を助けるかもしれません。 – simbabque

+0

'fetchrow_array'は単一の行(したがって名前)だけを返します。 'while(my @row = $ sth-> fetchrow_array){print" @row \ n "; } ' – ThisSuitIsBlackNot

+0

私は 'while(my @aData = $ rQuery-> fetchrow_array()){ $ rOutputHandler join('、 '、@ aData)を実行しています。 } ' – Imran

答えて

1

作業するデータベースの種類(Perl DBDドライバによって異なる)によっては、結果セットが複数ある可能性があります。

複数の結果セットを処理する方法があります(たとえば、2つの結果セットを生成した2つのステートメントを実行していて、その両方が必要な場合)。

サンプルコードはhereです。

ストアドプロシージャのステータスを無視したいので、結果をハッシュ(1つのプルまたはすべての行を1つ1つずつ)としてフェッチするだけで便利ですデータを取得する列の名前。

関連する問題