Вызов процедуры в ard-отчете
Модераторы: m0p3e, edward_K, Модераторы
Re: Вызов процедуры в ard-отчете
Итак это все-таки функция, хотя в первом сообщении названа процедурой. 
Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.
			
			
									
						
										
						Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.
Re: Вызов процедуры в ard-отчете
Это да, функция и результат выполнения возвращать не надо.m0p3e писал(а):Итак это все-таки функция, хотя в первом сообщении названа процедурой.
Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.
Re: Вызов процедуры в ard-отчете
Подскажите как создать именно процедуру, синтаксис
			
			
									
						
										
						Re: Вызов процедуры в ard-отчете
Создал процедуру и ураааааа!!!!!!!!! Заработало!!!!!!!! Спасибо, m0p3e!
			
			
									
						
										
						Re: Вызов процедуры в ard-отчете
А как передать в процедуру несколько параметров? Пробовал так:
			
			
									
						
										
						Код: Выделить всё
sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '), ( ' + d1 + ', ' + d2 + '))');
- 
				Den
 - Местный житель
 - Сообщения: 1847
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
 - Контактная информация:
 
Re: Вызов процедуры в ard-отчете
А почему d1 и d2 в скобках ?Руслан писал(а):А как передать в процедуру несколько параметров? Пробовал так:Код: Выделить всё
sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '), ( ' + d1 + ', ' + d2 + '))');
Re: Вызов процедуры в ard-отчете
Так я и спрашиваю как правильно... Пробовал еще так:А почему d1 и d2 в скобках ?
Код: Выделить всё
sqlExecDirect('F_IMPORT_NZ('KatsoprNrec', 'd1', 'd2')');
- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: Вызов процедуры в ard-отчете
усе зависит. Если число то никаких скобок не нужно. Если текст, то  в одинарных кавычках. Чтобы скушал компилятор либо добавляете +chr(39)+ либо пишите две одинарные кавычки подряд ''. Сделайте переменную, присвойте ей значение , выведите мессагой - если кавычки все на местах то идите дальше.
			
			
									
						
										
						Re: Вызов процедуры в ard-отчете
Как-то так:Руслан писал(а):Но ругается на скобку...Код: Выделить всё
sqlExecDirect('F_IMPORT_NZ('KatsoprNrec', 'd1', 'd2')');
Код: Выделить всё
sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '),#date(' + d1 +'),#date(' + d2 +'))');- 
				Den
 - Местный житель
 - Сообщения: 1847
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
 - Контактная информация:
 
Re: Вызов процедуры в ard-отчете
Ну вот так у меня не упало и в результат выполнения SQLEXECSTMT вернулось 0 (статус что все ок)
Правда не вернулся nrec почему то результат  
  но лень допинывать...тем не менее процедуры вызвалась на серваке и отработала
Лучше конечно параметры биндить и в процедуре просто ? через , тогда не будет гемора "ошибься где то лишней кавычкой"
			
			
									
						
										
						Код: Выделить всё
SQL Procedure TESTPRO (
					    s   : string
  					  );
var
 c1  : comp;
{
 c1 := #comp(0);
 c1 :=(
        SELECT nrec FROM katorg where name=s
      );
 return c1;
}
-----------------------
.form sss
.ard
.table blank
.var
  stmt : longint;
  li4 : integer;
  s: string;
  n_rec : comp;
.endvar
.begin
          s:='Абанина Бэла Олеговна';
          stmt := sqlAllocStmt;
          sqlBindCol(stmt,1,n_rec);
          SqlBindParam(stmt, 1,s);
          LI4:= SQLEXECSTMT(STMT,'TESTPRO(?)');
          Message('li4='+li4);
          sqlFetch(stmt);
          Message('nrec='+n_rec);
end.
.endform
Лучше конечно параметры биндить и в процедуре просто ? через , тогда не будет гемора "ошибься где то лишней кавычкой"
Re: Вызов процедуры в ard-отчете
Пробовал так запускать процедуру:
Пробовал так:
Так просто выкидывает из Галактики и процедура не отрабатывает:
			
			
									
						
										
						Код: Выделить всё
    sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '),#date(' + d1 +'),#date(' + d2 +'))');
Код: Выделить всё
    sqlExecDirect('F_IMPORT_NZ(''KatsoprNrec'', ''d1'', ''d2'')');
Код: Выделить всё
		stmt := sqlAllocStmt;
		sqlBindCol(stmt, 1, nresult);
                sqlBindParam( stmt, 1, KatsoprNrec );
                sqlBindParam( stmt, 2, d1 );
                sqlBindParam( stmt, 3, d2 );
		sqlExecStmt(stmt, 'select top 1 F_IMPORT_NZ (?, ?, ?) from GROUPUSL');
		while sqlFetch(stmt) = tsOk do
                nresult2:=string(nresult);
		sqlFreeStr(stmt);
Re: Вызов процедуры в ard-отчете
Может влияет то, что хранимку я регистрировал с одним входным параметром katsoprnrec, а потом уже в ORACLE добавил еще два параметра (дата начала d1 и дата конца d2). Потому как до того
как добавил эти два параметра, процедура вызывалась.
			
			
									
						
										
						как добавил эти два параметра, процедура вызывалась.
- 
				Den
 - Местный житель
 - Сообщения: 1847
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
 - Контактная информация:
 
Re: Вызов процедуры в ard-отчете
Что мешает взять да и попробовать перерегистрировать процедуру с нужным количеством параметров ?Руслан писал(а):Может влияет то, что хранимку я регистрировал с одним входным параметром katsoprnrec, а потом уже в ORACLE добавил еще два параметра (дата начала d1 и дата конца d2). Потому как до того
как добавил эти два параметра, процедура вызывалась.
Re: Вызов процедуры в ard-отчете
Пересоздал процедуру со всеми параметрами, все равно не вызывается((((
			
			
									
						
										
						Re: Вызов процедуры в ard-отчете
Ребят помогите с этой гребаной процедурой...