[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 メーリングリストの案内