Использовать временную таблицу или переменную таблицы.
DEClARE @ProjectOID as nvarchar (100)
DECLARE @TaskOID as nvarchar (100)
DECLARE @retTable TABLE (
TaskOID nvarchar(100),
TaskResourceOID nvarchar(100),
EvUserOID nvarchar(100)
)
DECLARE TaskOID_Cursor CURSOR FOR
SELECT TaskOID FROM ProjectOID_Temp
OPEN TaskOID_Cursor
FETCH NEXT FROM TaskOID_Cursor INTO @TaskOID
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @retTable
SELECT @TaskOID,t1.OID as TaskResourceOID, t2.OID as EvUserOID
FROM (
select OID, resourceOID from taskresourcehours
where projecttaskoid = @TaskOID) as t1,
(
select OID, workerOID
from Evuser
and workerOID in -- this must be AND and not a second WHERE
( select resourceOID from taskresourcehours where projecttaskoid = @TaskOID )
) as t2
WHERE t1.resourceOID = t2.workerOID
FETCH NEXT FROM TaskOID_Cursor
INTO @TaskOID
END
CLOSE TaskOID_Cursor
DEALLOCATE TaskOID_Cursor
SELECT * FROM @retTable
Или, что еще лучше, не использовать курсор (это можно сделать как выбор, но я оставляю это доВы ... Просто хотели показать, как использовать курсор и таблицу в качестве возвращаемого значения)