![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается выполнить процедуру.
SergP. © (2006-08-31 12:27:00)ADO, ORACLE, Provider=OraOLEDB.Oracle
ADCmd:TAdocommand;
ADQuery:TAdoQuery;
Пишу так:
...
ADCmd.CommandText:='DataOutput(par1 => :pdate1, par2 => :pdate2, par3 => :ptype, par4 => :charcode, par5 => :mdate1, par6 => :mdate2 ); end;';
with ADCmd.Parameters do
begin
ParamByName('pdate1').DataType:=ftDateTime;
ParamByName('pdate2').DataType:=ftDateTime;
ParamByName('ptype').DataType:=ftInteger;
ParamByName('charcode').DataType:=ftString;
ParamByName('mdate1').DataType:=ftDateTime;
ParamByName('mdate2').DataType:=ftDateTime;
end;
while not ADQuery.eof do
begin
ProgressBar1.Max:=ADQuery.RecordCount;
ProgressBar1.Position:=ADQuery.RecNo;
with ADCmd.Parameters do
begin
ParamByName('pdate1').value:=trunc(pbdate);
ParamByName('pdate2').value:=trunc(pedate);
ParamByName('ptype').value:=ADQuery.fieldByName('pertype').AsInteger;
ParamByName('charcode').value:=ADQuery.fieldByName('charcode').AsString;
ParamByName('mdate1').value:=ADQuery.fieldByName('moddate').AsDateTime;
ParamByName('mdate2').value:=ADQuery.fieldByName('moddate').AsDateTime;
end;
ADCmd.Execute;
Application.ProcessMessages;
ADQuery.Next;
end;
end;
Но не хочет работать...
ORA-00900: invalid SQL statement
Что я не правильно делаю?
ANB (2006-08-31 15:21:00) [1]
> SergP. (31.08.06 12:47) [8]
Вот не лень же мучиться . . .
Desdechado (2006-08-31 12:50:00) [2]> Убрал... Все равно ORA-00900: invalid SQL statement
А кто говорил, что надо убрать?
SergP. (2006-08-31 12:47:00) [3]> Где оформленный PL/SQL блок?
Ага.. вроде ясно...
ADCmd.CommandText:='begin DataOutput(par1 => :pdate1, par2 => :pdate2, par3 => :ptype, par4 => :charcode, par5 => :mdate1, par6 => :mdate2 ); end; ';
теперь работает
Reindeer Moss Eater (2006-08-31 12:45:00) [4]>Все равно ORA-00900: invalid SQL statement
А ты типа не можешь в это поверить. И продолжаешь думать что все у тебя валид.
SergP. (2006-08-31 12:44:00) [5]> [3] Desdechado © (31.08.06 12:39)
> > помогите найти где.
> ... :mdate2 ); end;';
Убрал... Все равно ORA-00900: invalid SQL statement
Reindeer Moss Eater (2006-08-31 12:43:00) [6]Ну такая штука в SQLPlus работает:
А у тебя в CommandText разве "такая штука"?
Где оформленный PL/SQL блок?
А если это для контекста SQL то где select?
SergP. (2006-08-31 12:42:00) [7]> [3] Desdechado © (31.08.06 12:39)
> > помогите найти где.
> ... :mdate2 ); end;';
Щас вытру... попробую... Но на PHP вот это работало:
$var2="par1 => to_date('$dpb','$datefrm'), par2 => to_date('$dpe','$datefrm'), par3 => $pertype, par4 => '$charcode', par5 => to_date('$moddate','$datefrm'), par6 => to_date('$moddate','$datefrm')";
$sql2="DataOutput($var2); end;";
$stmt=oci_parse($c1,$sql2);
OCI_execute($stmt);
Desdechado (2006-08-31 12:39:00) [8]> помогите найти где.
... :mdate2 ) ; end;';
SergP. (2006-08-31 12:37:00) [9]> [1] Reindeer Moss Eater © (31.08.06 12:33)
> Синтаксис видимо нарушаешь.
Ну такая штука в SQLPlus работает:
spool unload.log
declare
p1 date := to_date('01.01.2006','dd.mm.yyyy');
p2 date := to_date('31.12.2006','dd.mm.yyyy');
p5 date := to_date('01.12.2005','dd.mm.yyyy');
p6 date := to_date('28.02.2006','dd.mm.yyyy');
p7 number := 1;
p9 number := 300;
p10 number := 1;
p11 number := 1;
begin
for abc in
(
select distinct c.ModDate, c.PerType, f.CharCode
from card c, "FORM" f, ( select distinct CharCode From FormRow ) fr
where c."FORM" = f.code
and f.CharCode = fr.CharCode
and c.PerDate between p1 and p2
and c.ModDate between p5 and p6
) loop
DataOutput(
par1 => p1, par2 => p2,
par3 => abc.PerType, par4 => abc.CharCode,
par5 => abc.ModDate, par6 => abc.ModDate
);
end loop;
end;
/
spool off
exit;
если нарушил синтаксис, то помогите найти где...
Reindeer Moss Eater (2006-08-31 12:33:00) [10]Синтаксис видимо нарушаешь.