SET @V_TMP_SQL_CUR='FETCH NEXT FROM CUR_SCR_SGMNT_'+@V_BTCH_EXAM_ID+' into @V_SGMNT_ID,@LWR_SCR,@LWR_CNDTN,@LMT_SCR,@LMT_CNDTN,@V_SGMNT_NM '
PRINT @V_TMP_SQL_CUR
EXEC sp_executesql @V_TMP_SQL_CUR,N'@V_SGMNT_ID NVARCHAR(40),@LWR_SCR DECIMAL(10,2),@LWR_CNDTN NVARCHAR(40),@LMT_SCR DECIMAL(10,2),@LMT_CNDTN NVARCHAR(40),@V_SGMNT_NM NVARCHAR(100) OUT',@V_SGMNT_ID,@LWR_SCR,@LWR_CNDTN,@LMT_SCR,@LMT_CNDTN,@V_SGMNT_NM OUTPUT
SET @k = @k+1;
PRINT '打印:@V_SGMNT_ID ='+@V_SGMNT_ID
PRINT @V_SQL_STR
IF (@k = 1)
BEGIN
SET @V_SQL_STR = @V_SQL_STR+'( CASE '
SET @V_SQL_SGMNT_NM = @V_SQL_SGMNT_NM+'( CASE '
END
PRINT 'k'+CAST(@k AS VARCHAR(10))+'>>>>>>@V_SQL_STR='+ISNULL(@V_SQL_STR,'NULL')
PRINT 'k'+CAST(@k AS VARCHAR(10))+'>>>>>>@V_SQL_SGMNT_NM='++ISNULL(@V_SQL_STR,'NULL')
……
循环过程中发现,fetch输出的结果,只有数据最有一个字段有值,其余均为null
FETCH NEXT FROM CUR_SCR_SGMNT_20111208140702884 into @V_SGMNT_ID,@LWR_SCR,@LWR_CNDTN,@LMT_SCR,@LMT_CNDTN,@V_SGMNT_NM
打印:@V_SGMNT_ID =
CASE WHEN SUB_ID = 1 THEN k1>>>>>>@V_SQL_STR=CASE WHEN SUB_ID = 1 THEN
( CASE
k1>>>>>>@V_SQL_SGMNT_NM=CASE WHEN SUB_ID = 1 THEN
( CASE
@V_SGMNT_ID =
@LWR_CNDTN =
@LMT_CNDTN =
@V_SGMNT_NM =BSql Server 新手,还请大家指导!
游标用循环将查得的数据一个个赋给变量,再由变量来处理,而在绝大多数程序语句中,赋值语句是速度最慢的.因此,游标的效率和速度,你知道的!