2011-01-17 2 views
2

У меня есть два вопроса о вставке в таблицу SQL Server непосредственно из набора результатов хранимой процедуры.Вставить в таблицу, выбрав из хранимой процедуры

Я хочу сделать две вещи:

  1. СП, которое я называю его, чтобы получить ResultSet и таблицу я хочу вставить эти в ResultSet НЕ в тех же базах данных; Здесь у меня есть локальная база данных, которая вставляет в нее и SP, который вызывается с удаленного IP-адреса. Я хочу знать, как объявить строку подключения в файле Web.Config так, чтобы она охватывала как SP, так и таблицу, которую я вставляю в нее, потому что я хочу использовать предложение INSERT INTO ... SELECT, которое будет выбирать из SP и помещает набор результатов в моей локальной таблице.

  2. Есть несколько столбцов моей таблицы, значение которых не указано в SP, и я должен поместить на них свои значения. Как я могу выполнить эту операцию, чтобы любая строка моей таблицы могла получить значение столбца, которое вычисляется моим собственным и не имеет отношения к значениям набора результатов SP.

Ответы на них очень ценятся.

ответ

3

1, я хочу знать, как я должен объявить строку соединения в моем файле web.config

В принципе, вы установили его для подключения к локальной SQL Server. Что вам нужно сделать, так это убедиться, что логин на локальный SQL Server был настроен с именем LINKED SERVER в удаленной базе данных, а удаленный сервер был добавлен в качестве связанного сервера на локальный SQL Server. Вход связанного сервера используется для указания того, что, когда этот локальный пользователь подключается к конкретному удаленному серверу, он будет использовать указанные данные для входа, которым должно быть предоставлено разрешение на выполнение SP, о котором идет речь.

Здесь можно начать с нуля http://msdn.microsoft.com/en-us/library/aa213778%28v=sql.80%29.aspx

2, Есть некоторые столбцы таблицы, в которых их значение отсутствует в SP, и я должен поместить на них свои значения.

Вы должны направить через временную таблицу. Скажем, он обеспечивает 6 столбцов

INSERT #localtable (a,b,c,d,e,f) 
EXEC remote.sql.dbo.SomeSProc 1, 'a' 

#localtable должен иметь столбцы, равные результирующий Затем вставьте из этого временной таблицы до конечного пункта назначения

INSERT finaltable (a,b,x,c,d,y,e,f) 
SELECT a,b, 1 , c,d, 'test' , e,f 
FROM #localtable 
0

SQL SERVER - Выбор столбцов из хранимой процедуры Resultset

Очень хороший момент: http://blog.sqlauthority.com/2013/09/26/sql-server-select-columns-from-stored-procedure-resultset/

Сначала мы Виль l создайте образец хранимой процедуры.

CREATE PROCEDURE SampleSP 
AS 
SELECT 1 AS Col1, 2 AS Col2 
UNION 
SELECT 11, 22 
GO 

Теперь мы создадим таблицу, в которой мы временно сохраним результирующий набор хранимых процедур. Мы будем использовать команды INSERT INTO и EXEC для извлечения значений и вставки во временную таблицу.

CREATE TABLE #TempTable (Col1 INT, Col2 INT) 
GO 
INSERT INTO #TempTable 
EXEC SampleSP 
GO 

Далее мы будем извлекать данные из хранимой процедуры.

SELECT * 
FROM #TempTable 
GO 

Наконец, мы очистим все объекты, которые мы создали.

DROP TABLE #TempTable 
DROP PROCEDURE SampleSP 
GO 
+0

Как это отличается от принятого ответа? Кроме того, в этом ответе не рассматривается проблема сохранения хранимой процедуры на удаленном сервере. –

Смежные вопросы