存储过程中可以使用alter table语句吗?

2024-11-24 07:37:48
推荐回答(1个)
回答1:

看来你很少用sql啊~你这代码写得~~~先帮你找出几个最大的毛病吧:
1、create proc pro_wlcrk2
@date1 datetime,
@date2 datetime
as
begin
drop table temp_wlcrk
end你这里直接就end了那你过程不就到此结束了?把end移到倒数第二行去!
2、alter table temp_wlcrk add dw_na char(40) 你这里不用指定他为空不为空?
alter table temp_wlcrk add dw_na char(40) not null
3、fetch next from cursor_wldw1 into @cu_no1,@cu_na1 你确定游标的语法没问题?

补充:看来你真是刚用sql,一般涉及到对表结构的处理不提倡在过程中实现!至于你这个测试为啥不成功呢?你这么测试下看看有啥不一样:
create proc pro_addcolumn2
as
begin
if exists (select 1 from sysobjects where name = 'ddd')
drop table ddd
create table ddd ( dd char(4),dd2 char(4) default 0)
insert into ddd(dd,dd2)values ('1','a')
insert into ddd(dd,dd2)values ('2','b')
insert into ddd(dd,dd2)values ('3','c')
alter table ddd add dd3 char(4) null
select * from ddd
end
go
然后你分别执行:
exec pro_addcolumn2

select * from ddd
看看有啥不一样?
这也就是说你过程对表的字段处理当时是没效果的!!!