导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

在存储过程中如何创建临时表,而且表的列数由存储过程的参数动态确定

barljy 2007-12-06 10:26:45
要求如下:
在存储过程中如何创建一个临时表,而且表的列数由存储过程的参数动态确定。比如参数为3,则表中需创建FCol1,FCol2,FCol3三个字段,若参数为5,则需要创建FCol1,FCol2,FCol3,FCol4,FCol5五个字段
这样的SQL语句这么写?在线等待ing
...全文
88 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxmcxm 2007-12-18
exec()
创建的临时表,外面是看不到的,要使用临时表,语句只能写在exec里面
回复
benbenkui 2007-12-18
用EXEC执行语句时,必须加括号
如果是执行存储过程,则不需要

详细说明可以参考联机帮助中的EXECUTE使用说明

sp_executesql,是存储过程。
回复
dingshouqing 2007-12-18
可以不加的
例:
EXEC sp_executesql @selectStr,N'@depCode varchar(50) output',@cdepCode output
回复
云中客 2007-12-18
用EXEC执行语句时,必须加括号
如果是执行存储过程,则不需要

详细说明可以参考联机帮助中的EXECUTE使用说明
回复
gahade 2007-12-06
没办法,SQLServer这样规定的
回复
barljy 2007-12-06
楼上的方法很不错,受益了
我还向弱弱的问个问题:exec (@s)为什么要把@s括起来,直接写exec @s为什么不行?
回复
fa_ge 2007-12-06

declare @i int,@j int,@s varchar(1000)
set @i=5
set @j=1
set @s='create table t ('
while @j<=@i
begin
set @s=@s+'fil'+cast(@j as varchar)+' '+ ' varchar(10) ,'
set @j=@j+1
end
set @s=stuff(@s,len(@s),1,'')
set @s=@s+')'
--print @s
exec (@s)

select * from t

/*
fil1 fil2 fil3 fil4 fil5
---------- ---------- ---------- ---------- ----------

(所影响的行数为 0 行)

*/
回复
ldw701 2007-12-06
mark
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告