将本地数据插入SQL Server临时表

时间:2013-03-06 21:22:46

标签: sql-server sql-server-2005 ms-access odbc ms-access-2007

我有一些存储过程使用临时表来读取ID列表以执行更新。我还有一个本地查询,其中包含我想要传递给其中一个存储过程的ID列表。有没有办法做这样的事情?

INSERT INTO #MyBackendTempTable
SELECT ID
FROM MyLocalQuery

我想我可以通过循环遍历VBA中的记录集来实现这一点,如果必须的话我会这样做,但是有一个明智的方法可以做得更好。我知道Access可以进行直通查询,但据我所知,他们只能对服务器上的对象进行操作。是否有一些我不知道的简单方法?

1 个答案:

答案 0 :(得分:2)

如果查询真的那么简单,并且你只有一组ID(一列),你可以在前端构建一个以逗号分隔的列表,然后将它传递给后端的存储过程,使用您最喜欢的拆分机制(I have a favorite)拆分它。您的存储过程将是(假设#temp表先前在同一范围内创建):

CREATE PROCEDURE dbo.whatever
  @IDList VARCHAR(MAX)
AS
BEGIN
  SET NOCOUNT ON;
  INSERT #MyBackendTempTable(ID) SELECT Item FROM dbo.Split(@IDList);
END
GO

在前端,您将构建一个以逗号分隔的列表以传递给该一个参数。

或者你可以使用永久表和一些基于spid,应用程序实例的密钥,你有什么 - 假设你可以唯一地识别每个用户。然后你会这样做:

INSERT dbo.MyBackEndPermanentTable(Session, ID)
  SELECT 'SessionSomething', ID
  FROM MyLocalQuery;