Mam procedurę przechowywaną, która przyjmuje użytkownika zdefiniowane tabeli typu nazwie SeasonTable
który wygląda tak:C#: przechodzącą DataTable do procedury przechowywanej: kolumna kolejność problem
SeasonTable
[SeasonId] [int] NOT NULL,
[SeasonName] [varchar](50) NOT NULL,
[Month] [int] NULL,
[IsDeleted] [bit] NOT NULL
Przechowywane Procedura wygląda tak, jak pokazano poniżej:
CREATE PROCEDURE [dbo].[udpTest]
(
@STable dbo.SeasonTable READONLY
)
AS
BEGIN
SELECT [SeasonName] as SeasonName,[SeasonId],[Month],[IsDeleted]
FROM @AdminBillingSeasonsTable
END
Kiedy zadzwonić to od C# aplikacji
private DataTable TestCreateDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("SeasonName", typeof(string));
dt.Columns.Add("SeasonId", typeof(int));
dt.Columns.Add("Month", typeof(int));
dt.Columns.Add("IsDeleted", typeof(bool));
dt.Rows.Add("season1",1, 4, false);
dt.Rows.Add("season2",2, 9, false);
dt.Rows.Add("season3",3, 11, false);
return dt;
}
Gdy używam powyższej tabeli jako param SP z aplikacji C# to jest rzucanie błąd:
unable to convert "season1" to int.
Czy to znaczy, że kolejność kolumn w C# aplikacji powinny być tak samo jak kolejność kolumn w SQL?
Każda pomoc w tym zakresie jest bardzo cenna.
góry dzięki
Czy próbowałeś przełączania swoją kolejność kolumn (wtedy SeasonId SeasonName) w dt ?? – yogi
@yogi ya po zmianie to działało dobrze. !!!! – sandeep
@yogi może trzeba dodać, że jako odpowiedź: aby ludzie wiedzieli, że został odebrany – whytheq