powerbuilder 中,自动执行批量建表、存储过程。。。(sqlserver
-------------------------------------------------------- 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |