超奇怪的问题,百思不得其解.大家帮忙.EXEC(@Sql) 和把@Sql PRINT出来再执行居然不一样?
在一个存储过程中
有大致如下内容
CREATE PROCEDURE ....
...
@Para
...
AS
BEGIN
...
SET @Sql = '.....'
PRINT(@Sql) --输出sql
EXEC(@Sql) --执行sql
END
EXEC(@Sql)无法得到记录集,也不报错误
然而在消息里将输出的sql copy出来直接执行,却有记录集.
这就是百思不得其解的地方.
执行相同的sql,得到不同的结果.,
其他说明信息:
这个是一个分页存储过程.
而这种情况发生在第二页及其之后的页.
也就是说当显示第一页能得到记录集,到第二页之后就得不到了,当然第二页是有数据的.
他们的差别只在一个变量的值的大小不同,
,并且这个存储过程在别的程序里调用很正常.
想问问为什么执行PRINT出来的sql和直接执行sql怎么会不一样.
还有为什么第一页可以第二页就不可以
对了,sql中还包含一个多语句表值函数,
假如我把多语句表值函数替换成表则没有问题,
可是这个多语句表值函数在第一页和第二页返回的数据是相同的.
想了好多天了,就是想不出原因.
大家帮帮忙吧...