--------------------------------------------------------
integer li_file
string ls_filenamels_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