таблицы данных для передачи объемных значений в хранимой процедуре - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь передать объемные значения моей хранимой процедуре, используя таблицу данных следующим образом:

 var idlist = new DataTable();
        idlist.Columns.Add("sid", typeof(int));
        idlist.Columns.Add("suid", typeof(int));
        idlist.Rows.Add(new object[] {1, 1});
        idlist.Rows.Add(new object[] {1, 2});
        cmd.Parameters.Add(new SqlParameter("@SID", Convert.ToString(idlist)));

В SQL Server хранимая процедура выглядит следующим образом:

ALTER  PROCEDURE [dbo].[SUBNETTEMP]
(
@SID as IDLISTS READONLY
 )

AS
BEGIN

Create table [tempIDTable] (sid int, suid int)

Insert into [tempIDTable]

select * from @SID

END

IDLISTS определяется как тип таблицы следующим образом:

CREATE TYPE IDLISTS AS TABLE (
SID int, SUID int )
go

После запуска программы я не уверен, почему моя хранимая процедура не создает temIDTable. Я не уверен, успешно ли выполнена хранимая процедура или нет? Может кто-нибудь, пожалуйста, помогите.

Спасибо.

1 Ответ

1 голос
/ 19 сентября 2011

В вашем коде C # вы должны указать sqlDBType для использования параметра табличного значения.

Так попробуйте это:

SqlParameter myParam = cmd.Parameters.Add(new SqlParameter("@SID", idlist));
myParam.SqlDbType = SqlDbType.Structured;

См. эту страницу MSDN для получения дополнительной информации и примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...