关于 SQL SERVER 游标的问题(存储过程里),怎么把要查询的表设成动态的?。。。。。。。。。。。。。。。(没人会吗?)唉!对大富翁越来越失望了(10分)

  • 主题发起人 主题发起人 冰锋
  • 开始时间 开始时间

冰锋

Unregistered / Unconfirmed
GUEST, unregistred user!
我这么写 哪错了 执行后说 exec 附近有错
CREATE PROCEDURE sz_csr
@table varchar(50)
AS
DECLARE @sqlstr varchar(3000)
SET @sqlstr='select * from'+' '+@table
DECLARE sz_cursor cursor scroll
for
exec(@sqlstr)
open sz_cursor
 
在定义游标时不能用exec,实际上,游标所定义的是sql语句,只有在打开游标时,它才去执行定义好的sql语句
 
游标怎么能这样用呢,你可以先用exec将数据放到临时表比如##TempTable中,然后用游标直接对##TempTable表进行操作,或者你这样试试:
DECLARE @sqlstr varchar(3000)
SET @sqlstr='DECLARE @sqlstr varchar(3000)
DECLARE sz_cursor cursor scroll for select * from '+@table+' open sz_cursor '
注意,这样的话同样限制很多,不推荐使用,还是使用前面说的临时表
 
CREATE PROCEDURE sz_csr
@table varchar(50)
AS
DECLARE @sqlstr varchar(3000)
SET @sqlstr=' DECLARE sz_cursor cursor scroll for select * from'+' '+@table
exec(@sqlstr)
open sz_cursor

声明也必须要放在@sqlstr里面.
 
多人接受答案了。
 
后退
顶部