0

条件付きでデータを選択するストアド プロシージャを作成しますが、問題は次のとおりです:-

RequiredIDID = 2の場合(結合テーブルからいくつかのデータが選択され、そうでない場合はelseステートメントで選択されていません)、linq関数にマッピングした後、この問題が発生します

関数に requirdID = 2 を渡す場合、proc の最初の選択が実行されるので問題は発生しませんが、他の requirdID (例: = 3) を渡すと、このメッセージが表示されます。

データ リーダーは、指定された 'RealEstateCenterModel.SearchForRealState_Reader' と互換性がありません。タイプ 'FloorTypeCategory' のメンバーには、データ リーダーに同じ名前の対応する列がありません。

USE [RealEstateCenter]
GO
/****** Object:  StoredProcedure [dbo].[TestOptionalParameter]    Script Date: 08/23/2012 07:29:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[TestOptionalParameter]
@RequiredIDID int =NULL 
as

if @RequiredIDID=2
begin
SELECT     FloorSpace.SpaceFrom, RealEstateCategoryDetails.RequiredCategoryTypeName, FloorType.FloorTypeCategory, FloorType.FloorNotes, 
                      RealEstateTypes.RequiedType
FROM         PersonalRealStateDetails INNER JOIN
                      FloorSpace ON PersonalRealStateDetails.FloorSpaceID = FloorSpace.FloorSpaceID INNER JOIN
                      RealEstateCategoryDetails ON PersonalRealStateDetails.RequiredCategoryTypeID = RealEstateCategoryDetails.RequiredCategoryTypeID INNER JOIN
                      FloorType ON PersonalRealStateDetails.FloorTypeID = FloorType.FloorTypeID INNER JOIN
                      RealEstateTypes ON RealEstateCategoryDetails.RequiredID = RealEstateTypes.RequiredID

end

else
begin
SELECT     FloorSpace.SpaceFrom, RealEstateCategoryDetails.RequiredCategoryTypeName, RealEstateTypes.RequiedType
FROM         PersonalRealStateDetails INNER JOIN
                      FloorSpace ON PersonalRealStateDetails.FloorSpaceID = FloorSpace.FloorSpaceID INNER JOIN
                      RealEstateCategoryDetails ON PersonalRealStateDetails.RequiredCategoryTypeID = RealEstateCategoryDetails.RequiredCategoryTypeID INNER JOIN
                      RealEstateTypes ON RealEstateCategoryDetails.RequiredID = RealEstateTypes.RequiredID
end

どうすればこの問題を解決できますか?

4

1 に答える 1

0

欠落している列をいくつかのデフォルト値とともに 2 番目の選択に追加できます。

SELECT FloorSpace.SpaceFrom, RealEstateCategoryDetails.RequiredCategoryTypeName, RealEstateTypes.RequiedType, 0 as [FloorType.FloorTypeCategory], NULL as [FloorType.FloorNotes]

また

SELECT FloorSpace.SpaceFrom, RealEstateCategoryDetails.RequiredCategoryTypeName, RealEstateTypes.RequiedType, 0 as FloorTypeCategory, NULL as FloorNotes
于 2012-08-23T06:43:28.073 に答える