Вставить значения из хранимой процедуры в таблицу с помощью SqlBulkCopy - PullRequest
0 голосов
/ 19 марта 2020

У меня проблемы с переносом данных из хранимой процедуры в реальную таблицу с помощью SqlBulkCopy.

В хранимой процедуре я создаю временную таблицу, а затем вставляю в нее значения из многих таблиц. .

В хранимой процедуре:

-- Ex 1: 
CREATE TABLE #result (name varchar(100));

INSERT INTO #result
    SELECT name FROM dbo.Student
...
SELECT * FROM #result

-- Ex 2: 
DECLARE @result(name varchar(100))

INSERT INTO #result
    SELECT name FROM dbo.Student
...
SELECT * FROM @result

-- Ex3: //use store select directly without using temporary table
SELECT name FROM dbo.Student

-- Ex4: //use function, in function I wrote exactly in storeP of Ex1 or Ex2
SELECT name FROM fnc_myfunction

Код:

conn.Open();
Stopwatch watch = Stopwatch.StartNew();

string csvConnString1 = "MySource";
OleDbDataAdapter oleda1 = new OleDbDataAdapter("exec my_storeP")", csvConnString1);
DataTable dt1 = new DataTable();
oleda1.Fill(dt1);

using (SqlBulkCopy copy = new SqlBulkCopy(conn))
{
    copy.DestinationTableName = "dbo.Class";
    copy.ColumnMappings.Add("name", "StudentName");
    copy.WriteToServer(dt1);
}

Console.WriteLine("SqlBulkCopy: {0}", watch.Elapsed);

Однако я не могу закончить, потому что он не может сопоставить любое «имя» в хранилище Ex1 и Ex2 , но он запускается Ex3 и Ex4.

Что мне теперь делать для Ex1 и Ex2?

...