System.ArgumentException: параметр типа таблицы должен иметь допустимое имя типа.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 System.ArgumentException: параметр типа таблицы должен иметь допустимое имя типа.

Сообщение Anonymous »

Я пытаюсь передать определенный пользователем тип таблицы в запрос на C#.

тип определяется двумя столбцами (организация и подорганизация)

вот как выглядит мой код:

Код: Выделить всё

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);

}
}
я передаю параметры неправильно?

когда я делаю это на SQL-сервере вот так:

я передаю параметры неправильно?

когда я делаю это на SQL-сервере следующим образом:

Код: Выделить всё

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 DESC

everything works like it should.
Я тоже пробовал передать это вот так:

Код: Выделить всё

  SqlParameter p = cmd.Parameters.Add(new SqlParameter("@OrgSubOrg", SqlDbType.Structured));
p.Value = FilteredOrgSubOrg;
но получаю ту же ошибку

Код: Выделить всё

The table type parameter '@OrgSubOrg' must have a valid type name.
Может быть, я не могу передать его команде SQL, у меня есть аналогичный код в другом месте, который отлично работает с хранимой процедурой...?< /п>

Подробнее здесь: https://stackoverflow.com/questions/178 ... -type-name
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка: исключение типа «System.ArgumentException» произошло в System.Data.dll, но не было обработано в пользовательском
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»