souvikcode Ответов: 1

Как передать datatable в качестве параметра в хранимой процедуре SQL server из C#


USE [callService]
GO

/****** Object:  UserDefinedTableType [dbo].[code_front]    Script Date: 10/24/2016 14:25:30 ******/
CREATE TYPE [dbo].[code_front] AS TABLE(
	[createdonUTC] [datetime] NOT NULL,
	[createdTimezone] [int] NOT NULL,
	[phaseCount] [nvarchar](2) NOT NULL
)
GO

Это определяемая пользователем таблица, созданная в sql server 2008 r2.

Теперь я передача же объекта DataTable в C# для процедуры.


таблица sql server с именем "code_master" , содержащая следующие столбцы
code,createdonUTC,createdTimezone,phaseCount

где код в nvarchar (50) и первичный ключ.


Теперь процедура ввода данных в code_master---------
USE [callService]
GO
/****** Object:  StoredProcedure [dbo].[Insert_Code]    Script Date: 10/24/2016 13:51:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Insert_Code]
      @tblcode code_front READONLY
AS
BEGIN
      SET NOCOUNT ON;
     
      INSERT INTO code_master(code,createdonUTC,createdTimezone,phaseCount) output 1
      SELECT cast((convert(numeric(16,0),rand() * 8999999999999999) + 1000000000000000) as nvarchar) as code,
      createdonUTC,createdTimezone,phaseCount
      from @tblcode
END


Я знаю, что ошибка заключается в "SELECT cast ((convert(numeric(16,0), rand () * 8999999999999999) + 1000000000000000) as nvarchar) as code"- так как в пользовательской таблице нет столбца "code".

Но я надеюсь, вы понимаете, чего я добиваюсь.
Я передам объемные данные из c# в пользовательскую таблицу sql, таблица будет генерировать случайные числа для каждой строки, а затем все данные со случайным числом будут вставлены в таблицу code_master, так как столбец "код" предназначен для случайного числа.

Пожалуйста, помогите мне, как этого достичь. По процедуре так или иначе.
Но я не хочу генерировать случайное число в самом c#, потому что боюсь, что при каждом запуске этого приложения случайное число может повторяться, как нигде, где я сохраняю предыдущие числа.
Но в sql он не генерирует одно и то же число (по крайней мере, для многих комбинаций, как я создал 16 цифр, которые сделают много кроров чисел).

Что я уже пробовал:

Написано выше. Процедура и таблицы.

1 Ответов

Рейтинг:
2

manu_dhobale

Будьте конкретны в этой проблеме, ниже пост поможет вам
Обратиться Отправить (передать) DataTable в качестве параметра хранимой процедуре в C# и VB.Net[^]