我有这样的存储过程:将逗号分隔的字符串传递给存储过程?
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