Re: Прямой SQL
Добавлено: 12 май 2012, 14:12
RAJAH , скиньте сюда тогда полный текст процедуры и вызова ее ...ну или на почту намыльте ..попробую у себя
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://ns1.tyumbit.ru/
см личку...RAJAH писал(а):Пытался описать процедуру на DSQL (sql procedure ...): при компиляции рантаймит.
Как правильно применить #ROWCOUNT к хранимке и узнать количество записей, которое она возвратила?В хранимых функциях и процедурах доступны глобальные переменные:
Код: Выделить всё
<global-variables> = #ROWCOUNT | #OK | #NOTFOUND
Это, конечно, один из вариантов, но не уверен, что быстрее будет. К тому же часто сталкивался, что Recordsintable показывает число записей в какой-то из таблиц представления, а не в представлении.Den писал(а):Recordsintable
Код: Выделить всё
sstr2='insert into saldobox set saldobox.cpodr=#comp('+nRecPodr+'), saldobox.cbox=#comp('+DSQL_GetFieldValueByNum(2)+'),';
sstr2 = sstr2+'saldobox.cmc=#comp('+ManufSpec.MCnRec+'), saldobox.cparty=#comp('+Party.nRec+'), saldobox.kol=#double('+kolvo+')';
iHandle2 = DSQL_CreateHandle();
result = DSQL_RunQuery(iHandle2, sstr2);
iHandle2 =DSQL_DeleteHandle();
sstr3='update tekbox where tekbox.cpodr=#comp('+nRecPodr+') and tekbox.cbox=#comp('+DSQL_GetFieldValueByNum(2)+')';
sstr3 = sstr3+'set tekbox.empty=#double('+emp+')';
iHandle3 = DSQL_CreateHandle();
result = DSQL_RunQuery(iHandle3, sstr3);
iHandle3 =DSQL_DeleteHandle();
Код: Выделить всё
06.07.2012 11:08:55 [SAVINKOV]:
insert into saldobox set saldobox.cpodr=#comp(562949953761944), saldobox.cbox=#comp(562949953422678),saldobox.cmc=#comp(562949953435032), saldobox.cparty=#comp(562949953493236), saldobox.kol=#double(115000)
06.07.2012 11:08:55 [SAVINKOV]:
Ошибка(1,21): Ожидалось : "SELECT"
Код: Выделить всё
06.07.2012 11:08:55 [SAVINKOV]:
update tekbox where tekbox.cpodr=#comp(562949953761944) and tekbox.cbox=#comp()set tekbox.empty=#double(1)
06.07.2012 11:08:55 [SAVINKOV]:
Ошибка(1,14): Ожидалось : "SET"
06.07.2012 11:08:55 [SAVINKOV]:
!ERROR: QUERY #comp(),spbox.kol=#double(115000),spbox.dopr=#date(2012/07/04) not foun
06.07.2012 11:08:55 [SAVINKOV]:
Ошибка(2,1): Ожидался SQL оператор
06.07.2012 11:09:01 [SAVINKOV]:
DECLARE ID VARCHAR2(40); BEGIN ID := VRN."GETUSERNREC" || VRN."GETSESSIONID"; DELETE FROM VRN."SYS#LOCKS" WHERE USERID = ID; END;
ORA-12571: TNS:packet writer failure
06.07.2012 11:09:01 [SAVINKOV]:
DELETE FROM VRN."X$ACTIVEUSERS" WHERE ROWID NOT IN (SELECT ADDRESS FROM VRN."SYS#LOCKS")
ORA-03114: not connected to ORACLE
Пишу:Den писал(а):Синтаксис update в dsql update ..set...where
Наверное из за этого на update ругается
Код: Выделить всё
sstr3='update tekbox set empty=#double('+emp+') where cpodr=#comp('+nRecPodr+') and cbox=#comp('+nreckatbox+')';
iHandle3 = DSQL_CreateHandle();
result = DSQL_RunQuery(iHandle3, sstr3);
iHandle3 =DSQL_DeleteHandle();
Код: Выделить всё
06.07.2012 13:04:12 [SAVINKOV]:
update tekbox set empty=#double(1) where cpodr=#comp(562949953761944) and cbox=#comp(562949953422678)
06.07.2012 13:04:12 [SAVINKOV]:
Ошибка(1,24): Синтаксическая ошибка в выражении
06.07.2012 13:04:13 [SAVINKOV]:
DECLARE ID VARCHAR2(40); BEGIN ID := VRN."GETUSERNREC" || VRN."GETSESSIONID"; DELETE FROM VRN."SYS#LOCKS" WHERE USERID = ID; END;
ORA-12571: TNS:packet writer failure
06.07.2012 13:04:13 [SAVINKOV]:
DELETE FROM VRN."X$ACTIVEUSERS" WHERE ROWID NOT IN (SELECT ADDRESS FROM VRN."SYS#LOCKS")
ORA-03114: not connected to ORACLE