Страница 3 из 4

Re: Вызов процедуры в ard-отчете

Добавлено: 26 мар 2014, 17:23
m0p3e
Итак это все-таки функция, хотя в первом сообщении названа процедурой.
Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.

Re: Вызов процедуры в ard-отчете

Добавлено: 26 мар 2014, 17:30
Руслан
m0p3e писал(а):Итак это все-таки функция, хотя в первом сообщении названа процедурой.
Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.
Это да, функция и результат выполнения возвращать не надо.

Re: Вызов процедуры в ard-отчете

Добавлено: 26 мар 2014, 17:42
Руслан
Подскажите как создать именно процедуру, синтаксис

Re: Вызов процедуры в ard-отчете

Добавлено: 26 мар 2014, 18:05
Руслан
Создал процедуру и ураааааа!!!!!!!!! Заработало!!!!!!!! Спасибо, m0p3e!

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 14:12
Руслан
А как передать в процедуру несколько параметров? Пробовал так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '), ( ' + d1 + ', ' + d2 + '))');

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 14:44
Den
Руслан писал(а):А как передать в процедуру несколько параметров? Пробовал так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '), ( ' + d1 + ', ' + d2 + '))');
А почему d1 и d2 в скобках ?

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 14:51
Руслан
А почему d1 и d2 в скобках ?
Так я и спрашиваю как правильно... Пробовал еще так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ('KatsoprNrec', 'd1', 'd2')');
Но ругается на скобку...

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 15:31
edward_K
усе зависит. Если число то никаких скобок не нужно. Если текст, то в одинарных кавычках. Чтобы скушал компилятор либо добавляете +chr(39)+ либо пишите две одинарные кавычки подряд ''. Сделайте переменную, присвойте ей значение , выведите мессагой - если кавычки все на местах то идите дальше.

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 15:34
m0p3e
Руслан писал(а):

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ('KatsoprNrec', 'd1', 'd2')');
Но ругается на скобку...
Как-то так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '),#date(' + d1 +'),#date(' + d2 +'))');

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 15:45
Den
Ну вот так у меня не упало и в результат выполнения SQLEXECSTMT вернулось 0 (статус что все ок)

Код: Выделить всё

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
Правда не вернулся nrec почему то результат :grin: но лень допинывать...тем не менее процедуры вызвалась на серваке и отработала
Лучше конечно параметры биндить и в процедуре просто ? через , тогда не будет гемора "ошибься где то лишней кавычкой"

Re: Вызов процедуры в ard-отчете

Добавлено: 27 мар 2014, 16:46
Руслан
Пробовал так запускать процедуру:

Код: Выделить всё

    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-отчете

Добавлено: 28 мар 2014, 12:14
Руслан
Может влияет то, что хранимку я регистрировал с одним входным параметром katsoprnrec, а потом уже в ORACLE добавил еще два параметра (дата начала d1 и дата конца d2). Потому как до того
как добавил эти два параметра, процедура вызывалась.

Re: Вызов процедуры в ard-отчете

Добавлено: 28 мар 2014, 12:20
Den
Руслан писал(а):Может влияет то, что хранимку я регистрировал с одним входным параметром katsoprnrec, а потом уже в ORACLE добавил еще два параметра (дата начала d1 и дата конца d2). Потому как до того
как добавил эти два параметра, процедура вызывалась.
Что мешает взять да и попробовать перерегистрировать процедуру с нужным количеством параметров ?

Re: Вызов процедуры в ard-отчете

Добавлено: 28 мар 2014, 12:38
Руслан
Пересоздал процедуру со всеми параметрами, все равно не вызывается((((

Re: Вызов процедуры в ard-отчете

Добавлено: 28 мар 2014, 16:11
Руслан
Ребят помогите с этой гребаной процедурой...