发信人: lzzzl(lzzzl) 
整理人: winsy(2003-03-11 08:29:09), 站内信件
 | 
 
 
请参考ORACLE版本的BAT脚本,它可和成SQL语句,SQLSERVER应该差不多:
 
 @echo off
 
 if "%4"=="" goto error
 set _tb=%1
 set _old=%2
 set _new=%3
 set _type=%4
 set _tmp=%5
 
 set _tmp=fdTmp
 if not "_tmp%"=="" goto skip1
 set _tmp=fdTmp
 :skip1
 
 echo {>output.sql
 echo // 添加临时字段 >>output.sql
 echo alter table %_tb% add(%_tmp% %_type%); >>output.sql
 echo //>>output.sql
 
 echo // 移走数据 >>output.sql
 echo update %_tb% set %_tmp%=%_old% >>output.sql
 echo commit;>>output.sql
 echo //>>output.sql
 
 echo //  删除原字段 >>output.sql
 echo alter table %_tb% drop (%_old%) >>output.sql
 echo //>>output.sql
 
 echo // 添加新字段 >>output.sql
 echo alter table %_tb% add(%_new% %_type%); >>output.sql
 echo //>>output.sql
 
 echo // 移回数据 >>output.sql
 echo update %_tb% set %_new%=%_tmp% >>output.sql
 echo commit;>>output.sql
 echo //>>output.sql
 
 echo // 删除临时字段 >>output.sql
 echo alter table %_tb% drop (%_tmp%) >>output.sql
 echo }>>output.sql
 
 echo 完成,结果已输出到ouput.sql中,请检查!
 pause
 goto end
 
 :error
 echo 用法 数据表名 原字段名 新字段名 字段类型及大小
 echo 如 %0 tbUser fdPwd fdPwd varchar2(40)
 
 :end
 set _tb=
 set _fd=
 set _type=
 set _tmp=
 
 
  ---- 不想计较得失,却总在计较得失      | 
 
 
 |