使用由存储过程

时间:2015-09-24 14:47:49

标签: sql sql-server tsql stored-procedures temp-tables

我知道这是错误的并且不会起作用,但是我知道我想要做什么。

我只是加入了[GetFinalCountByGroupId] sp在内部使用的表,但我不想这样,因为它使用的表有一些大的varbinary数据。当然sp仍在查询它,所以它可能与连接而不是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"。

2 个答案:

答案 0 :(得分:1)

这里有语法错误:

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

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

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

答案 1 :(得分: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