System.ArgumentException: parametr typu tabeli musi mieć poprawną nazwę typu
Próbuję przekazać niestandardowy typ tabeli do zapytania w C #.
typ jest zdefiniowany za pomocą 2 kolumn (org i sub org)
tak wygląda mój kod:
DataSet ds = new DataSet();
try
{ DataTable FilteredOrgSubOrg = new DataTable("OrgSubOrgValueType");
FilteredOrgSubOrg.Columns.Add("org", typeof(string));
FilteredOrgSubOrg.Columns.Add("subOrg", typeof(string));
FilteredOrgSubOrg.Rows.Add(org, orgsub);
using (SqlConnection conn = new SqlConnection(cCon.getConn()))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText =
"select * from myTable ex where year = @year' and qtr = @qtr" +
" and EXISTS(SELECT 1 FROM @OrgSubOrg tt WHERE ex.org like tt.org" +
" AND ex.orgsub = tt.suborg )"+
" order by ex.org,year, qtr DESC";
// 2. set the command object so it knows
// to execute a stored procedure// 3. add parameter to command, which
// will be passed to the stored procedure
cmd.Parameters.Add(new SqlParameter("@OrgSubOrg", FilteredOrgSubOrg));
cmd.Parameters.Add(new SqlParameter("@year", year));
cmd.Parameters.Add(new SqlParameter("@qtr", qtr));
conn.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = cmd;
sqlDA.Fill(ds); }
}
Czy niepoprawnie przekazuję parametry?
kiedy robię to na serwerze SQL w ten sposób:
declare @OrgSubOrg OrgSubOrgValueType
insert into @OrgSubOrg values ('05%','00000000')
insert into @OrgSubOrg values ('03%','00000000')
------------ complete -----------------------------------
select * from myTable ex
where
year = '2013' and qtr = '1'
and EXISTS( SELECT 1
FROM @OrgSubOrg tt
WHERE ex.org like tt.org
AND ex.orgsub = tt.suborg )
order by ex.org,year, qtr DESCeverything works like it should.
Próbowałem też przekazać to w ten sposób:
SqlParameter p = cmd.Parameters.Add(new SqlParameter("@OrgSubOrg", SqlDbType.Structured));
p.Value = FilteredOrgSubOrg;
ale otrzymuję ten sam błąd
The table type parameter '@OrgSubOrg' must have a valid type name.
może nie mogę przesłać go do polecenia SQL, mam podobny kod w innym miejscu, który działa dobrze z procedurą składowaną ...?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Sprawdź również
parametry tabeli
https://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx
post
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od: