Sql 如何为每个用户在游标中运行循环
我有一个SP,它给了我两条记录(2个用户名),如下所示 现在, 我想要的是使用Sql 如何为每个用户在游标中运行循环,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有一个SP,它给了我两条记录(2个用户名),如下所示 现在, 我想要的是使用游标循环每个用户,并从表中显示其数据,该数据作为参数中传递的日期 下面是我的SP ALTER PROCEDURE GET_USER_REPORT_DATA @From_Date datetime, @To_Date datetime AS BEGIN Select * into #GetUserTable from
游标循环每个用户
,并从表中显示其数据,该数据作为参数中传递的日期
下面是我的SP
ALTER PROCEDURE GET_USER_REPORT_DATA
@From_Date datetime,
@To_Date datetime
AS
BEGIN
Select * into #GetUserTable
from
(
select distinct a.N_UserMkey, b.mkey,
b.first_name + ' ' + b.last_name NAME from inward_doc_tracking_trl a inner join user_mst b on
a.N_UserMkey = b.mkey
where a.U_datetime between @From_Date and @To_Date
) as xx
DECLARE @N_Usermkey int, @mkey int, @NAME varchar
DECLARE UserCursor CURSOR FOR
select distinct a.N_UserMkey, b.mkey,
b.first_name + ' ' + b.last_name NAME from inward_doc_tracking_trl a inner join
user_mst b on a.N_UserMkey = b.mkey
where a.U_datetime between @From_Date and @To_Date
OPEN UserCursor
FETCH NEXT FROM vendor_cursor
INTO @N_Usermkey, @mkey, @NAME
-- need to run loop for each user
SELECT * FROM #GetUserTable
DROP TABLE #GetUserTable
END
去
我不知道如何使用
光标
请让我知道您根本不需要光标,您的简单选择查询就足够了
select a.N_UserMkey
,b.mkey
,ISNULL(b.first_name + ' ','') + ISNULL(b.last_name,'') NAME
from inward_doc_tracking_trl a
inner join user_mst b on a.N_UserMkey = b.mkey
where a.U_datetime between @From_Date and @To_Date
此逻辑不需要使用游标。您应该只在必要时使用游标。@GordonLinoff:因此,如果没有游标,如何能够使用与其
mkey
相关的所有数据循环每个用户?感谢的可能副本,但我已经在提供相应记录的临时表中使用了它。但是你能告诉我如何使用游标循环每个用户,以检查传递日期的记录是否存在吗?如果你的子句已经这样做了,你不需要游标。是的,你是对的。将与我的上级确认,明天继续。我需要去祈祷。再见tc@NK如果你需要和某人确认你从这里得到的答案,你不应该首先问他吗?