Вставить в таблицу, выбрав из хранимой процедуры - PullRequest
2 голосов
/ 17 января 2011

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

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

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

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

Ваши ответы очень важны.

Ответы [ 2 ]

3 голосов
/ 17 января 2011

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 голосов
/ 24 ноября 2015

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

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

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

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
...