请教高手 delphi 里能否调用 sql文件(a.sql) 将它执行(数据库是oracle)?(100分)

  • 主题发起人 主题发起人 loving
  • 开始时间 开始时间
L

loving

Unregistered / Unconfirmed
GUEST, unregistred user!
请教高手 delphi 里能否调用 sql文件(a.sql) 将它执行(数据库是oracle)?

a.sql 内容:

create table tab1 (
col1 number not null,
col2 date
);
create table tab2 (
col1 number not null,
col2 varchar(40)
);

可以的话应该怎么做?
(不行读a.sql文件 而是直接执行,如在sqlplus里执行似的)
 
可以通过TQuery.
 
见下:
TQUERY.CLOSE;
TQUERY.SQL.CLEAR;
TQUERY.SQL.LOADFROMFILE('A.SQL');
TQUERY.OPEN;
 
更正:
TQUERY.CLOSE;
TQUERY.SQL.CLEAR;
TQUERY.SQL.LOADFROMFILE('A.SQL');
TQUERY.EXECSQL
 
请注意 a.sql 十多条语句 不但条 sql ,报错 应该如何处理?
create table tab1 (
col1 number not null,
col2 date
);
create table tab2 (
col1 number not null,
col2 varchar(40)
);
 
oracle我不是很了解.
我在Sql Server 中是这样实现的:
建立一个存储过程:
CREATE procedure dbo.Usp_Open_sql
@sql text=null
as
if(@sql is not null)
begin
exec(@sql)
end
GO
那么在DELPHI中想调用Sql源文件,只需将文件内容当成参数传递给过程.
即可.
 
同意Lee.JH
 
Oracle 中执行create好像只有动态sql一种方法,关注一下
 
请注意 a.sql 十多条语句 不但条 sql ,报错 应该如何处理?
可能是你的分隔符问题,导致不能一次执行多条,你把a.sql中的字符一个个读出来,看ascii
码,是不是怪字符(你在文件中直接看不到的)捣乱
你把文件中的语句copy到库中,用类似query
analysis的工具执行,如果有问题,你不妨试试下面的
在a.sql中加上标志符(或直接用里面的;做分隔符),用文件操作一次读一个sql语句执行,速度
同样较快。

[begin]
create table tab1 (
col1 number not null,
col2 date
);
[end]
[begin]
create table tab2 (
col1 number not null,
col2 varchar(40)
);

[end]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部