create proc Sp_MyProc
@FieldShow varchar(200),
@Table varchar(50)
as
declare @Sql varchar(2000)
set @sql='select '+@FieldShow +' from '+@Table
declare aa cursor for @Sql
open aa
....
....我的问题就是用游标的时候是不是不能用@Sql参数
如果可以用告诉我要怎么用
@FieldShow varchar(200),
@Table varchar(50)
as
declare @Sql varchar(2000)
set @sql='select '+@FieldShow +' from '+@Table
declare aa cursor for @Sql
open aa
....
....我的问题就是用游标的时候是不是不能用@Sql参数
如果可以用告诉我要怎么用
@FieldShow varchar(200),
@Table varchar(50)
as
exec ('declare aa cursor for select '+@FieldShow +' from '+@Table)
open aa
....
....
消息 443,级别 16,状态 14,过程 T_SeachTree,第 8 行
在函数内的 'EXECUTE STRING' 中对带副作用的或依赖于时间的运算符的使用无效。
我这个是放到函数里的..不是放到过程中的...
drop function T_SeachTree
create function T_SeachTree(@Table varchar(50),@FieldShow varchar(100),@RepStr varchar(10))
returns @tb table(TreeID varchar(1000),TreeName varchar(2000),TreeLvevl varchar(1000))
as
begin
declare @Sql varchar(2000)
set @sql='select '+@FieldShow +' from '+@Table
declare aa cursor for @sql
open
....
....
return
end
函数?不能EXEC!
但是不是 create proc Sp_MyProc 吗?
动态列,动态表。
但 fetch next into @val1,@val2
这里的@val1,@val2可是需要先declare
你没定义,怎么可以获取呢?请换 用另一种思路。
returns @tb table(TreeID varchar(1000),TreeName varchar(2000),TreeLvevl varchar(1000))
as
begin
declare aa cursor for select DeptID,DeptName,DeptLevel from Sys_Departments
open aa
fetch next from aa into @tb
...
...
close aa
deallocate aa
return
end
这里怎么不能用@tb 有没有什么方法