主题:怎样使存储过程变“活”
			 小小小牛牛牛
				 [专家分:0]  发布于 2006-10-04 08:57:00
 小小小牛牛牛
				 [专家分:0]  发布于 2006-10-04 08:57:00							
			[b]这是我建立的一个存储过程:[/b]
CREATE PROCEDURE jlbiao AS
if exists (select *from sysobjects where name='ds')
begin
drop table ds
end
create table ds
(stuno int,
stuname char(10),
stuage int check(stuage>15 and stuage<30),
)
[b]第一次调用它可以建立一个名为“ds”表。
请问各位大哥:
在下一次调用它时,我想建立另一张表
应该怎么办?[/b]
						
					 
		
			
回复列表 (共6个回复)
		
								
				沙发
				
					 zhangsan5421 [专家分:140]  发布于 2006-10-04 09:49:00
zhangsan5421 [专家分:140]  发布于 2006-10-04 09:49:00				
				你可以把ds表名改动就可以了。
							 
						
				板凳
				
					 小小小牛牛牛 [专家分:0]  发布于 2006-10-04 09:54:00
小小小牛牛牛 [专家分:0]  发布于 2006-10-04 09:54:00				
				我的意思是在不修改存储过程的前题下。
比如把存储过程某个部分做成变量。在
我下次调用的时候,对变量重新赋值。
使它产生出一个新的表。
若是每次调用都修改存储过程。不如直接
建立一个表来的容易。
							 
						
				3 楼
				
					 kkzjk [专家分:440]  发布于 2006-10-04 13:23:00
kkzjk [专家分:440]  发布于 2006-10-04 13:23:00				
				用另外一个存储过程调用这个存储过程。把那个ds换成参数
							 
						
				4 楼
				
					 lgt9732 [专家分:170]  发布于 2006-12-28 14:18:00
lgt9732 [专家分:170]  发布于 2006-12-28 14:18:00				
				CREATE PROCEDURE jlbiao
(
  @tablename varchar(10)
)
AS
if exists (select *from sysobjects where name = @tablename)
begin
declare @str varchar(100)
set @str = 'drop table' +' '+@tablename
exec(@str)
end
declare @str1 varchar(100)
set @str1 = 'create table'+' ' + @tablename + '
(stuno int,
stuname char(10),
stuage int check(stuage>15 and stuage<30),
)'
exec(@str1)
go
试试看行不行/
							 
						
				5 楼
				
					 啊来 [专家分:0]  发布于 2007-01-06 15:33:00
啊来 [专家分:0]  发布于 2007-01-06 15:33:00				
				这样有什么用,表结构又不是都一样的
							 
						
				6 楼
				
					 lgt9732 [专家分:170]  发布于 2007-01-08 09:00:00
lgt9732 [专家分:170]  发布于 2007-01-08 09:00:00				
				那小弟就不会了!看哪位高人会,我也想学学!
							 
									
			
我来回复