powerbuilder 中,自动执行批量建表、存储过程。。。(sqlserver数据库)

--------------------------------------------------------

integer li_file

string ls_filename
ls_filename=gs_cur_path+"\sql.sql"    -----------------由sqlserver中生成的脚本

li_file=fileopen(ls_filename,LineMode! )
integer  li_return
string ls_sql,ls_read
ls_sql=''
ls_read=''
hpb_1.Position=0
hpb_1.maxposition=50


li_return=fileread(li_file,ls_read)
DO UNTIL li_return <0
  if upper(left(ls_read,2))='GO' then
if ls_sql<>'' then
ls_sql=ls_sql+';'
gf_exesql(ls_sql)-----------------------------------执行sql语句
hpb_1.Position=hpb_1.Position+1
yield()
ls_sql=''
end if
else
ls_sql=ls_sql+ls_read+'~r~n'
end if


  li_return=fileread(li_file,ls_read)

LOOP

fileclose(li_file)

-------------------------------------------


-----------------------

gf_exesql    ----------------------------------------

-------------------------------

STRING ls_t_sql,ls_sql
long ll_start_pos
int li_count

ls_t_sql=ls_filename  //lsf 07-8-31 edit *************直接执行sql语句了
SQLCA.AutoCommit = True
//EXECUTE IMMEDIATE :ls_t_sql ;  //里面有多条命令,是用;间隔的,直接执行不对 下面语句取出单条命令来,一一执行  
ll_start_pos=pos(ls_t_sql,';',1)
do while ll_start_pos>0 
ls_sql=left(ls_t_sql,ll_start_pos - 1)
EXECUTE IMMEDIATE :ls_sql ;
if sqlca.sqlcode<>0 then
messagebox('提示','数据库操作错误!(执行'+ls_sql+'时)~r~n'+sqlca.sqlerrtext)
rollback;
SQLCA.AutoCommit = false
//return false

end if
ls_t_sql=mid(ls_t_sql,ll_start_pos+1)
ll_start_pos=pos(ls_t_sql,';',1)
loop
SQLCA.AutoCommit = false//lsf 08-2-21 add

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值