首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

继续纠结动态游标有关问题

2012-07-30 
继续纠结动态游标问题SQL codeSET @V_TMP_SQL_CURFETCH NEXT FROM CUR_SCR_SGMNT_+@V_BTCH_EXAM_ID+ i

继续纠结动态游标问题

SQL code
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_CUREXEC 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 OUTPUTSET @k = @k+1;PRINT '打印:@V_SGMNT_ID ='+@V_SGMNT_IDPRINT @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 新手,还请大家指导!

[解决办法]
一个游标效率已经够差的了,你还来个动态游标,你还想不想让服务器干点儿别的什么了啊!

游标里要用很多的变量,你做成动态以后,要把变量从动态执行中传来传去,丢一个都不行哪!
[解决办法]
你说对了,所有的用了游标的存储过程(注意,不是你说的SP,SP是指system procedure,是系统存储过程),效率都低.这是不容置疑的.
游标用循环将查得的数据一个个赋给变量,再由变量来处理,而在绝大多数程序语句中,赋值语句是速度最慢的.因此,游标的效率和速度,你知道的!

热点排行
Bad Request.