嘗試這一個 -
ALTER PROCEDURE [dbo].[spGetAllCandidatesEmployeesByOrgId]
@ip_OrgId INT,
@Active_XML BIT
AS BEGIN
DECLARE
@Entity VARCHAR(10)
, @EntityID BIGINT
, @LastModifiedOn DATETIME
, @RowNum BIGINT
DECLARE cursor_name CURSOR FAST_FORWARD READ_ONLY FOR
SELECT
q.Entity
, q.EntityID
, q.LastModifiedOn
, RowNo = ROW_NUMBER() OVER (ORDER BY q.LastModifiedOn DESC)
FROM (
SELECT
'Candidate' AS [Entity]
, v.ProposalId AS EntityID
, v.LastModifiedOn AS LastModifiedOn
FROM dbo.viwProposals v
WHERE [email protected]_OrgId AND IsHide = 0
UNION
SELECT
'Employee'
, v.EmployeeId
, v.LastModifiedOn
FROM dbo.viwEmployees v
WHERE [email protected]_OrgId AND IsTerminate = 0
) q
ORDER BY LastModifiedOn DESC
OPEN cursor_name
FETCH NEXT FROM cursor_name INTO
@Entity
, @EntityID
, @LastModifiedOn
, @RowNum
WHILE @@FETCH_STATUS = 0 BEGIN
--
FETCH NEXT FROM cursor_name INTO
@Entity
, @EntityID
, @LastModifiedOn
, @RowNum
END
CLOSE cursor_name;
DEALLOCATE cursor_name;
END
或者試試這個 -
ALTER PROCEDURE [dbo].[spGetAllCandidatesEmployeesByOrgId]
@ip_OrgId INT,
@Active_XML BIT
AS BEGIN
DECLARE
@Entity VARCHAR(10)
, @EntityID BIGINT
, @LastModifiedOn DATETIME
, @RowNum BIGINT
DECLARE cursor_name CURSOR FAST_FORWARD READ_ONLY FOR
WITH cte AS
(
SELECT
'Candidate' AS [Entity]
, v.ProposalId AS EntityID
, v.LastModifiedOn AS LastModifiedOn
FROM dbo.viwProposals v
WHERE [email protected]_OrgId AND IsHide = 0
UNION
SELECT
'Employee'
, v.EmployeeId
, v.LastModifiedOn
FROM dbo.viwEmployees v
WHERE [email protected]_OrgId AND IsTerminate = 0
)
SELECT
q.Entity
, q.EntityID
, q.LastModifiedOn
, RowNo = ROW_NUMBER() OVER (ORDER BY q.LastModifiedOn DESC)
FROM cte q
ORDER BY LastModifiedOn DESC
OPEN cursor_name
FETCH NEXT FROM cursor_name INTO
@Entity
, @EntityID
, @LastModifiedOn
, @RowNum
WHILE @@FETCH_STATUS = 0 BEGIN
--
FETCH NEXT FROM cursor_name INTO
@Entity
, @EntityID
, @LastModifiedOn
, @RowNum
END
CLOSE cursor_name;
DEALLOCATE cursor_name;
END
*** ***爲什麼地球上的你想使用遊標?這是**最糟糕的**可能的設計在大多數情況下在SQL Server上下文中 - **不要這樣做**除非**絕對**必須...... – 2013-05-07 11:45:32
您遇到什麼錯誤?此外,我們可以看到,IsHide未在此SP定義的任何地方,並且使用在cluase WHERE ORGID = @ ip_OrgId AND IsHide = @IsHide – 2013-05-07 11:48:30
ip_OrgId是傳遞一個參數時調用存儲過程(例如ip_OrgId = 400),並IsHide是一個變量(例如IsHide = 0) - @Sandeep Kumar – 2013-05-07 11:56:03