1

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

INSERT INTO #MyBackendTempTable
SELECT ID
FROM MyLocalQuery

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

4

1 回答 1

2

好吧,如果查询真的那么简单,并且您只有一组 ID(一列),您可以在前端构建一个逗号分隔的列表,然后将其传递给后端的存储过程并使用拆分它你最喜欢的拆分机制(我有一个最喜欢的)。您的存储过程将是(假设先前在同一范围内创建了 #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;
于 2013-03-06T21:38:40.547 回答