发信人: lzzzl(lzzzl)
整理人: winsy(2003-03-11 08:29:15), 站内信件
|
请参考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=
---- 不想计较得失,却总在计较得失 |
|