Учитывая хранимую процедуру, как вы указали:
CREATE PROCEDURE PostIdSelect
@PostDate datetime
AS
SELECT id FROM Post WHERE DateCreated = @PostDate
Это можно использовать без изменений путем записи набора строк в таблицу:
DECLARE @PostID int
CREATE TABLE #PostIDs (PostID int)
INSERT #PostIDs EXEC PostIdSelect @TodaysDate
SELECT @PostID = TOP 1 PostID FROM #PostIDs
-- use @PostID
Другой способ сделать это, если вы всегда будете возвращать только одну строку, это использовать выходной параметр, который требует изменения вашей хранимой процедуры:
CREATE PROCEDURE PostIdSelect2
@PostDate datetime,
@PostID int OUT
AS
SELECT TOP 1 @PostID = id FROM Post WHERE DateCreated = @PostDate
используя его так:
DECLARE @PostID int
EXEC PostIdSelect2 @TodaysDate, @PostID OUT
-- use @PostID
Обратите внимание, что с обоими этими методами вы не можете затмить идею о том, что может быть несколько PostID. С первым методом вставки таблицы вы можете сделать что-то с каждой строкой по отдельности или даже присоединиться к таблице. Было бы лучше, если бы вообще было возможно присоединиться к таблице, но если вам нужно что-то сделать с каждой строкой по отдельности, курсор быстрого просмотра только для чтения на самом деле быстрее, чем зацикливание себя.