I이 프로 시저가 :쉼표로 구분 된 문자열을 저장 프로 시저에 전달 하시겠습니까?
ALTER PROCEDURE [dbo].[uspPages_HotelPrices_Lookup_Select]
@HotelCode nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM tPages_HotelPrices_Lookup
WHERE HotelCode IN (SELECT * FROM DBO.ufSplit(@HotelCode, ','))
END
DBO.ufsplit
은 쉼표로 구분을 나누고 테이블을 반환하는 쉼표로 구분 된 각각의 값을 포함하는 각 행.
나는 아래의 코드로이 저장 프로 시저에 문자열을 전달하고있다 :
static void Main(string[] args)
{
HotelCodesTableAdapter hcTa = new HotelCodesTableAdapter();
DestinationMarketingEntity.HotelCodesDataTable hotelCodesDt = hcTa.GetData();
string hotelCodesString = "";
//Comma separating hotel codes and putting each word in '' to be passed to sql sproc as a list
for (int i = 0; i < hotelCodesDt.Count; i++)
{
hotelCodesString += hotelCodesDt.Rows[i].ItemArray.GetValue(0).ToString() + ",";
}
hotelCodesString = hotelCodesString.TrimEnd(',');
HiltonEEHotelPricesTableAdapter hEETa = new HiltonEEHotelPricesTableAdapter();
WorldWideFeedEntity.HiltonEEHotelPricesDataTable hEEDt= hEETa.GetData(hotelCodesString);
}
이 마지막 행이 저장 프로 시저가
를 호출되고된다.기본적으로 hotelCodesString
은 "1,2,3"
과 유사하지만이 저장 프로 시저에서는 아무 것도 반환하지 않습니다. 하지만 아래를 실행하면
select *
from tPages_HotelPrices_Lookup
where HotelCode IN
(
SELECT *
FROM DBO.ufSplit('1,2,3',',')
);
내가 원하는 모든 것을 되 찾을 수 있습니다. 내가 여기서 뭔가를 놓치고 있니? C#으로 값을 전달할 때 아무 것도 반환하지 않는 이유는 무엇입니까?
태그가 변경되면 도움이 되나요? – Srb1313711
'[dbo]'는 mssql이라는 큰 힌트입니다. –
C#에서 저장 프로 시저를 호출하는 코드가 표시되지 않습니다. – Romoku