关于直接从存储过程的结果集插入SQL Server表,我有两个问题。
我想做两件事:
我正在调用它来获取结果集的SP和我想要插入结果集的表不在同一个数据库中;在这里,我有一个插入其中的本地数据库和一个从远程IP地址调用的SP。我想知道如何在我的Web.Config文件中声明连接字符串,以便它涵盖SP和我插入的表,因为我想使用INSERT INTO ... SELECT
子句,它将从SP中选择并将结果集放在我的本地表中。
我的表中有一些列,它们的值不在SP中,我应该在它们上面放置我自己的值。如何执行此操作,以便我的表的任何行都可以获得由我自己计算的列值,并且与SP结果集值无关。
非常感谢您的回答。
答案 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