使用由存储过程填充的 temp table 中的列

Use column from temp table that is populated by stored proc

我知道这是错误的,不会起作用,但这是我正在尝试做的事情的想法。

我只想加入 [GetFinalCountByGroupId] sp 在内部使用的 table,但我不想加入,因为它使用的 table 有一些大的 varbinary 数据。当然 sp 仍在查询它,所以它可能与 join 而不是 sp 调用一样具有良好的性能。无论哪种方式,我都很好奇我是否可以先让它工作 - 如果不能,我会尝试加入。不管怎样,这里有一些代码:

CREATE PROCEDURE [dbo].[GetFinalRequests]
AS
BEGIN
SET NOCOUNT ON
DECLARE @FinalTable TABLE
(
  FinalCount TINYINT
)
INSERT INTO @FinalTable
EXEC [dbo].[GetFinalCountByGroupId] [GroupId]

SELECT [Id]
      ,[GroupId]
      ,[SubmitBy]
      ,[InUse]
  FROM [dbo].[Requests]
  WHERE [InUse] = 1
  AND @FinalTable.FinalCount > 0
END

编辑:这是执行此操作的结果... 必须声明标量变量“@FinalTable”。

这里有一个语法错误:

SELECT [Id]
      ,[GroupId]
      ,[SubmitBy]
      ,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
  AND @FinalTable.FinalCount > 0

您无法像 SQL 中那样访问 FinalCount 列。 我不知道临时 table 的目的,只是为了让它工作:

SELECT [Id]
      ,[GroupId]
      ,[SubmitBy]
      ,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
  AND (select sum(FinalCount) from @FinalTable) > 0

好的 - 我放弃了这个,只是做了一个连接:

SELECT [Id]
      ,r.[GroupId]
      ,[SubmitBy]
      ,[InUse]
FROM [dbo].[Requests] r
JOIN [dbo].[AgreementDocuments] d
  ON r.[GroupId] = d.[GroupId]
WHERE r.[InUse] = 1
AND d.[Final] = 1