Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为每个用户在游标中运行循环_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql 如何为每个用户在游标中运行循环

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,它给了我两条记录(2个用户名),如下所示

现在,

我想要的是使用
游标循环每个用户
,并从表中显示其数据,该数据作为参数中传递的日期

下面是我的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如果你需要和某人确认你从这里得到的答案,你不应该首先问他吗?