[Seasar-user:9875] [DBFlute]2個以上の引数をもつストアドプロシージャで引数がnullになる

多加谷 祐 [E-MAIL ADDRESS DELETED]
2007年 8月 13日 (月) 23:22:40 JST


多加谷@アークシステムです。 

dbflute-0.5.2
s2dao-1.0.43
SQL Server 2005 

で以下の現象が出ています。原因が分かりますでしょうか? 

[現象]
SQL2Entityで生成したEntityを使い、Dao経由でストアドプロシージャを呼び出すと、引数が2個以上のときに引数が見つからずにすべてnullが渡されてしまう。 

[ストアドプロシージャ]
 -------------------------------------------------------------
 --全設備を取得するprocedure
 ------------------------------------------------------------- 

raiserror('Now at crate procedure for Facility list ....',0,1) 

if object_id( 'dbo.usp_get_facility_list', 'P' ) is not null
	drop procedure dbo.usp_get_facility_list
go 

create procedure dbo.usp_get_facility_list
as
begin
	select
		Facility.facilityId as FacilityId,
		Facility.facilityNm as FacilityNm
	from Facility
	order by SortOrdr; 

end
go 

 -------------------------------------------------------------
 --上記procedureのテスト
 ------------------------------------------------------------- 

raiserror('Now at testing usp_get_facility_list ....',0,1) 

execute dbo.usp_get_facility_list
go 

 -------------------------------------------------------------
 --全設備を取得するprocedure
 ------------------------------------------------------------- 

raiserror('Now at crate procedure for Facility list 1....',0,1) 

if object_id( 'dbo.usp_get_facility_list1', 'P' ) is not null
	drop procedure dbo.usp_get_facility_list1
go 

create procedure dbo.usp_get_facility_list1
(
	@currentDttm1 as datetime		--現在時刻
)
as
begin
	select
		Facility.facilityId as FacilityId,
		Facility.facilityNm as FacilityNm
	from Facility
	order by SortOrdr; 

end
go 

 -------------------------------------------------------------
 --上記procedureのテスト
 ------------------------------------------------------------- 

raiserror('Now at testing usp_get_facility_list1 ....',0,1) 

execute dbo.usp_get_facility_list1 '2007/08/01'
go 

 -------------------------------------------------------------
 --全設備を取得するprocedure
 ------------------------------------------------------------- 

raiserror('Now at crate procedure for Facility list 2....',0,1) 

if object_id( 'dbo.usp_get_facility_list1', 'P' ) is not null
	drop procedure dbo.usp_get_facility_list2
go 

create procedure dbo.usp_get_facility_list2
(
	@currentDttm1 as datetime,		--現在時刻
	@currentDttm2 as datetime		--現在時刻
)
as
begin
	select
		Facility.facilityId as FacilityId,
		Facility.facilityNm as FacilityNm
	from Facility
	order by SortOrdr; 

end
go 

 -------------------------------------------------------------
 --上記procedureのテスト
 ------------------------------------------------------------- 

raiserror('Now at testing usp_get_facility_list2 ....',0,1) 

execute dbo.usp_get_facility_list2 '2007/08/01', '2007/08/01'
go 

[SQLファイル](計3ファイル) 

 --#UspGetFacilityListEntity#--
execute dbo.usp_get_facility_list 

 --#UspGetFacilityList1Entity#--
execute dbo.usp_get_facility_list1 /*currentDttm1*/'2007/08/01' 

 --#UspGetFacilityList2Entity#--
execute dbo.usp_get_facility_list2 /*currentDttm1*/'2007/08/01', /*currentDttm2*/'2007/08/01' 

[Dao] 

	/*
	 * 全設備を取得する。
	 */	
	List<RkUspGetFacilityListEntity> uspGetFacilityList(
	);		 

	/*
	 * 全設備を取得する。
	 */	
	List<RkUspGetFacilityList1Entity> uspGetFacilityList1(
			Date currentDttm1
	);		 

	/*
	 * 全設備を取得する。
	 */	
	List<RkUspGetFacilityList2Entity> uspGetFacilityList2(
			Date currentDttm1,
			Date currentDttm2
	);		 

[Dao呼び出し] 

RkBaseDao dao = ( RkBaseDao)DaoUtil.getComponent( RkBaseDao.class);
dao.uspGetFacilityList();
dao.uspGetFacilityList1(new Date());		
dao.uspGetFacilityList2(new Date(), new Date());		 

[結果] 

[6124] SqlCommand Initialization Cost: [00m00s000ms]
[6124] --#UspGetFacilityListEntity#--
[6124] execute dbo.usp_get_facility_list
[6124] 論理的なコネクションを取得しました
[6124] 論理的なコネクションを閉じました
[6124] ===========/ [00m00s036ms - Selected count: 5 first={1,設備01}]
[6124]
[6124] /====================================================================================
[6124]                                                       RkBaseDao.uspGetFacilityList1()
[6124]                                                       ==============================/
[6124] SqlCommand Initialization Cost: [00m00s000ms]
[6124] --#UspGetFacilityList1Entity#--
[6124] execute dbo.usp_get_facility_list1 '2007-08-13'
[6124] 論理的なコネクションを取得しました
[6124] 論理的なコネクションを閉じました
[6124] ===========/ [00m00s004ms - Selected count: 5 first={1,設備01}]
[6124]
[6124] /====================================================================================
[6124]                                                       RkBaseDao.uspGetFacilityList2()
[6124]                                                       ==============================/
[6124] SqlCommand Initialization Cost: [00m00s000ms]
[6124] 引数(currentDttm1)が見つかりません
[6124] 引数(currentDttm1)が見つかりません
[6124] 引数(currentDttm2)が見つかりません
[6124] 引数(currentDttm2)が見つかりません
[6124] --#UspGetFacilityList2Entity#--
[6124] execute dbo.usp_get_facility_list2 null, null
[6124] 論理的なコネクションを取得しました
[6124] 論理的なコネクションを閉じました
[6124] ===========/ [00m00s015ms - Selected count: 5 first={1,設備01}] 





Seasar-user メーリングリストの案内