您的位置:首页 > 产品设计 > UI/UE

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

2011-12-31 11:37 267 查看
--------------------------------------------------------

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: