Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

Не получается выполнить процедуру.   Найти похожие ветки 

 
SergP.   (2006-08-31 12:27) [0]

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

Что я не правильно делаю?


 
Reindeer Moss Eater ©   (2006-08-31 12:33) [1]

Синтаксис видимо нарушаешь.


 
SergP.   (2006-08-31 12:37) [2]

> [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;


если нарушил синтаксис, то помогите найти где...


 
Desdechado ©   (2006-08-31 12:39) [3]

> помогите найти где.
... :mdate2 ); end;";


 
SergP.   (2006-08-31 12:42) [4]

> [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);


 
Reindeer Moss Eater ©   (2006-08-31 12:43) [5]

Ну такая штука в SQLPlus работает:

А у тебя в CommandText разве "такая штука"?
Где оформленный PL/SQL блок?
А если это для контекста SQL то где select?


 
SergP.   (2006-08-31 12:44) [6]

> [3] Desdechado ©   (31.08.06 12:39)
> > помогите найти где.
> ... :mdate2 ); end;";


Убрал... Все равно ORA-00900: invalid SQL statement


 
Reindeer Moss Eater ©   (2006-08-31 12:45) [7]

>Все равно ORA-00900: invalid SQL statement

А ты типа не можешь в это поверить. И продолжаешь думать что все у тебя валид.


 
SergP.   (2006-08-31 12:47) [8]

> Где оформленный PL/SQL блок?


Ага.. вроде ясно...

 ADCmd.CommandText:="begin DataOutput(par1 => :pdate1, par2 => :pdate2, par3 => :ptype, par4 => :charcode, par5 => :mdate1, par6 => :mdate2 ); end; ";

теперь работает


 
Desdechado ©   (2006-08-31 12:50) [9]

> Убрал... Все равно ORA-00900: invalid SQL statement
А кто говорил, что надо убрать?


 
ANB ©   (2006-08-31 15:21) [10]


> SergP.   (31.08.06 12:47) [8]

Вот не лень же мучиться . . .



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
2-1160642469
Fostr
2006-10-12 12:41
2006.10.29
SQL: Parameter not found


2-1160629003
Unknone
2006-10-12 08:56
2006.10.29
Компонент OpenDialog


2-1160628341
LaDy-ekat
2006-10-12 08:45
2006.10.29
ADO & Access


3-1156953026
bmp2006
2006-08-30 19:50
2006.10.29
Не удается выполнить запрос с подзапросом


2-1160468808
Андрей Иванов
2006-10-10 12:26
2006.10.29
Отчеты в Делфи7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский