通过从存储过程中进行选择来插入表

时间:2011-01-17 07:55:03

标签: asp.net sql-server stored-procedures select oledb

关于直接从存储过程的结果集插入SQL Server表,我有两个问题。

我想做两件事:

  1. 我正在调用它来获取结果集的SP和我想要插入结果集的表不在同一个数据库中;在这里,我有一个插入其中的本地数据库和一个从远程IP地址调用的SP。我想知道如何在我的Web.Config文件中声明连接字符串,以便它涵盖SP和我插入的表,因为我想使用INSERT INTO ... SELECT子句,它将从SP中选择并将结果集放在我的本地表中。

  2. 我的表中有一些列,它们的值不在SP中,我应该在它们上面放置我自己的值。如何执行此操作,以便我的表的任何行都可以获得由我自己计算的列值,并且与SP结果集值无关。

  3. 非常感谢您的回答。

2 个答案:

答案 0 :(得分:3)

1,我想知道如何在Web.Config文件中声明连接字符串

基本上,您将其设置为连接到本地SQL Server。您需要做的是确保已使用LINKED SERVER登录到远程数据库来设置本地SQL 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

答案 1 :(得分:0)

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