一个定时执行SQL语句的问题

kobebryant 2003-08-26 12:57:27
我要执行一大串SQL语句,而且每条语句都很长,用SQL.ADD添加进去十分不方便,请问各位大侠用什么方法处理会简便些。还有执行的结果怎样导出到文本文件中呢?此外还想请教一下怎样才能做到定时执行的效果,因为程序每月10号都要执行一次。
...全文
179 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
microd 2003-08-30
  • 打赏
  • 举报
回复
当然是在数据库
fhuibo 2003-08-30
  • 打赏
  • 举报
回复
Ontime事件可以定时执行啊
kobebryant 2003-08-29
  • 打赏
  • 举报
回复
我还想问存储过程是写在哪里的?是在delphi的程序行里写,还是在数据库里写?我用的是delphi6 + oracle,能不能举个写存储过程的例子给我?
kobebryant 2003-08-29
  • 打赏
  • 举报
回复
我还想问存储过程是写在哪里的?是在delphi的程序行里写,还是在数据库里写?我用的是delphi6 + oracle,能不能举个写存储过程的例子给我?
kobebryant 2003-08-28
  • 打赏
  • 举报
回复
请问在同一个存储过程中能不能同时执行几条SQL语句?如果可以该怎样写?
tfxg 2003-08-28
  • 打赏
  • 举报
回复
在一个存储过程可以同时多条sql语句,只要你喜欢执行多长的语句都行。
你可以写好一个存储过程,然后再做一个作业,这个作业就是执行这个存储过程的,最后再调度这个作业的执行时间。你想要他什么时候执行都行,只要开机。
zgtys 2003-08-27
  • 打赏
  • 举报
回复
你用ORACLE导出数据会吗?
如果用程序的话,下面让你参考:
procedure TfrmDumpOut.btnOkClick(Sender: TObject);
var
Eid: String;
MyStr: TStringList;
sSQL: String;
begin
if Trim(cbEid.Text)='' then exit;
Eid:=Copy(cbEid.Text,1,Pos(' ',cbEid.Text)-1);
MyStr:=TStringList.Create;
Screen.Cursor:=crHourGlass;
try
//预算单位
MyStr.Add('[ysdw]');

sSQL:='select eid,name,totalname,class,isleaf,code,did from enterprise where [year]='+IntToStr(gYear)+' and eid like '''+Eid+'%''';
FQuery.Close;
FQuery.SQL.Text:=sSQL;
FQuery.Open;
FQuery.First;
while not FQuery.Eof do
begin
MyStr.Add(FQuery.FieldByName('eid').AsString+'|'+FQuery.FieldByName('name').AsString+'|'+FQuery.FieldByName('totalname').AsString
+'|'+FQuery.FieldByName('class').AsString+'|'+FQuery.FieldByName('isleaf').AsString+'|'+FQuery.FieldByName('code').AsString+'|'+FQuery.FieldByName('did').AsString+'|');
FQuery.Next;
end;




sd.FileName:=Eid+' '+GetEnterprise(Eid);
if sd.Execute then
begin
MyStr.SaveToFile(GetSysFileName);
Encrypt(sd.FileName+'.f07');
DeleteFile(GetSysFileName);
end;
finally
MyStr.Free;
end;
Screen.Cursor:=crDefault;
Application.MessageBox('导出数据完成!','提示',MB_OK+MB_ICONINFORMATION);
end;

kobebryant 2003-08-26
  • 打赏
  • 举报
回复
我是初学者,请各位大侠再详细点,介绍一下存储过程应该怎样写,在程序中是怎样调用的。分数我一定给足,先谢谢了!
2312 2003-08-26
  • 打赏
  • 举报
回复
procedure TForm1.DbgridToTxt(source: Tobject);
var
FileName: TextFile;
DataSet: TDataSet;
titlestr,valuestr,tempstr:string;
counter:integer;
begin
if (source is TDBGrid) then
DataSet := TDBGrid(source).DataSource.DataSet
else
DataSet := TDataSet(source);
if ((DataSet.IsEmpty) or (not DataSet.Active)) then
Exit
else
begin
DataSet.DisableControls;
DataSet.First;
if SaveDialog1.Execute then
begin
AssignFile(FileName,SaveDialog1.FileName);
Rewrite(FileName);
titlestr := '';
for counter := 0 to DataSet.FieldCount - 1 do
begin
titlestr := titlestr + ' ' + FormatStr(DataSet.Fields[counter].DisplayLabel, DataSet.Fields[counter].DataSize);
end;
titlestr := Trim(titlestr);
Writeln(filename,titlestr);
while not DataSet.Eof do
begin
valuestr := '';
for counter := 0 to DataSet.FieldCount - 1 do
begin
tempstr := DataSet.Fields[counter].Text;
tempstr := FormatStr(tempstr, DataSet.Fields[counter].DataSize);
valuestr := valuestr + ' ' + tempstr;
end;
valuestr := Trim(valuestr);
Writeln(filename,valuestr);
DataSet.Next;
end;
CloseFile(FileName);
end;
DataSet.EnableControls;
ShowMessage('保存成功');
end;
end;

XXSingle 2003-08-26
  • 打赏
  • 举报
回复
或许用程序,或许用sql服务器进行自动执行
hp0773 2003-08-26
  • 打赏
  • 举报
回复
sql server:
create job
火龙岛主 2003-08-26
  • 打赏
  • 举报
回复


如果你使用的是sql server,oracle数据库,
最好使用[作业]来处理定时执行的问题

有关作业你可以看相关帮助
kobebryant 2003-08-26
  • 打赏
  • 举报
回复
我是初学者,请各位大侠再详细点,介绍一下存储过程应该怎样写,在程序中是怎样调用的。分数我一定给足,先谢谢了!
yjw1018 2003-08-26
  • 打赏
  • 举报
回复
Ontime事件可以定时执行啊
liyong00512 2003-08-26
  • 打赏
  • 举报
回复
create proc proc_name
(
.......
)
wyr521 2003-08-26
  • 打赏
  • 举报
回复
用存储过程
设置日期为那天时,才执行
具体怎么设置日期,自己多看一下书,这样对你有好处
kobebryant 2003-08-26
  • 打赏
  • 举报
回复
我用的是oracle数据库,请问存储过程怎样写啊?在程序中怎样执行存储过程?谢谢各位了!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧