PB中执行sql文件问题,请各位大虾帮忙,答对的给100分!!

时间:2022-02-18 19:54:27
我用文本编辑器建立的一个sql文件:base.sql的文件
内容如下:
if exists(select * from sysobjects where name='SYCONFIG' and type='U')
   drop table SYCONFIG

create table SYCONFIG
(F_KEY char(16) not null,
F_VALUES  char(255) default '',
F_NOTE char(60) null)
;
create unique  index SYCONFIG on SYCONFIG(F_KEY)
;

insert into SYCONFIG
values('001','Y');
insert into SYCONFIG
values('002','Y');

问题是在PB中怎样执行SQL文件,在数据库里建表,并向表中插入数据?在pb中调用建立数据库的SQL行不行,该如何解决?如何读取多个*.sql文件的内容并执行它。

14 个解决方案

#1


pb一次只能执行一行动态sql
execute immediate :ls_sql using transaction就可以了
执行sql文件好象不可以,那是dbms提供的功能,非标准
你只能从sql文件中读取sql,然后按照';'分解成sql串执行.
记得一个sql文件一定在一个事务里执行.

#2


如果后台是ms sql server 如何执行*.sql文件,具体说明一下好吗?如何读取*.sql文件,读一行,怎么读?

#3


你把*.sql文件写到字符串变量中
string sql
sql=''
execute immediate :sql;

#4


呵呵,只要你把sql文件运行在SQL server上,生成一个存储过程。然后可以在PB中调用它,格式为:
Declare psjfx Procedure For p_sjfxcl_preview_a
   @l_startdate=:l_startdatetime,@l_enddate=:l_enddatetime;
Execute Psjfx;
其中p_sjfxcl_preview_a为存储这程的名字,两个@为两个传递参数。

#5


用pb把文本文件导入变量ls_sql 变以下 ls_sql='exec('+ls_sql+')'
在pb总动态执行此 ls_sql (只限于sqlserver)

#6


你把*.sql文件内容写到字符串变量中 ls_sql 
ls_sql='exec('+ls_sql+')'
execute immediate :sql
(只限于sqlserver )

#7


csdn就没高手吗

#8


胡说,上面的方法都不错

#9


synix(软件蓝领) ( ) 信誉:100  2003-09-19 14:25:00  得分:0 
 
 
  csdn就没高手吗
  
 
真怀疑你的4个角是怎么来的!!!

#10


gz

#11


up

#12


up

#13


可以使用 "kernel32"  中的winexec()来执行一个文件。

#14


前面回答都文不对题. 我也在找执行SQL文本文件的方法,关注!

#1


pb一次只能执行一行动态sql
execute immediate :ls_sql using transaction就可以了
执行sql文件好象不可以,那是dbms提供的功能,非标准
你只能从sql文件中读取sql,然后按照';'分解成sql串执行.
记得一个sql文件一定在一个事务里执行.

#2


如果后台是ms sql server 如何执行*.sql文件,具体说明一下好吗?如何读取*.sql文件,读一行,怎么读?

#3


你把*.sql文件写到字符串变量中
string sql
sql=''
execute immediate :sql;

#4


呵呵,只要你把sql文件运行在SQL server上,生成一个存储过程。然后可以在PB中调用它,格式为:
Declare psjfx Procedure For p_sjfxcl_preview_a
   @l_startdate=:l_startdatetime,@l_enddate=:l_enddatetime;
Execute Psjfx;
其中p_sjfxcl_preview_a为存储这程的名字,两个@为两个传递参数。

#5


用pb把文本文件导入变量ls_sql 变以下 ls_sql='exec('+ls_sql+')'
在pb总动态执行此 ls_sql (只限于sqlserver)

#6


你把*.sql文件内容写到字符串变量中 ls_sql 
ls_sql='exec('+ls_sql+')'
execute immediate :sql
(只限于sqlserver )

#7


csdn就没高手吗

#8


胡说,上面的方法都不错

#9


synix(软件蓝领) ( ) 信誉:100  2003-09-19 14:25:00  得分:0 
 
 
  csdn就没高手吗
  
 
真怀疑你的4个角是怎么来的!!!

#10


gz

#11


up

#12


up

#13


可以使用 "kernel32"  中的winexec()来执行一个文件。

#14


前面回答都文不对题. 我也在找执行SQL文本文件的方法,关注!