Использовать столбец из временной таблицы, который заполняется хранимым процессом
Я знаю, что это неправильно и не сработает, но вот идея того, что я пытаюсь сделать.
Я хотел бы просто присоединиться к таблице, которую sp [GetFinalCountByGroupId] использует для внутреннего использования, но я не хочу, потому что таблица, которую она использует, имеет некоторые большие данные 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
edit: вот результат выполнения этого...Должен объявить скалярную переменную "@FinalTable".
2 ответа
У вас есть синтаксическая ошибка здесь:
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
Хорошо - я отказался от этого и только что сделал соединение:
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