Прямой SQL
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
RAJAH , скиньте сюда тогда полный текст процедуры и вызова ее ...ну или на почту намыльте ..попробую у себя
Re: Прямой SQL
Пытался описать процедуру на DSQL (sql procedure ...): при компиляции рантаймит.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
см личку...RAJAH писал(а):Пытался описать процедуру на DSQL (sql procedure ...): при компиляции рантаймит.
Re: Прямой SQL
Да! Спасибо! Плюс в карму!
Сам не догадался SQLExecStmt на ошибку проверить.
Сам не догадался SQLExecStmt на ошибку проверить.
Re: Прямой SQL
Ещё вопросик возник.
В документации написано:
В документации написано:
Как правильно применить #ROWCOUNT к хранимке и узнать количество записей, которое она возвратила?В хранимых функциях и процедурах доступны глобальные переменные:
Код: Выделить всё
<global-variables> = #ROWCOUNT | #OK | #NOTFOUND
Re: Прямой SQL
Ни у кого не получилось?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
"#ROWCOUNT - количество записей в курсоре. Можно применять для получения количества записей в неявных курсорах."
Сам не пробал, но судя по описалову, это для того чтобы узнать скока записей в задекларированном курсоре в хранимке.
Если просто узнать кол-во записей по какому то условию то может Функцию лучше которая будет возвращать это количество ?
Сам не пробал, но судя по описалову, это для того чтобы узнать скока записей в задекларированном курсоре в хранимке.
Если просто узнать кол-во записей по какому то условию то может Функцию лучше которая будет возвращать это количество ?
Re: Прямой SQL
Какую функцию? Да мне вообще без условий: просто, сколько записей вернулось.
Я-то сам в цикле считал (i:=i+1), но это, кажется, долго.
Я-то сам в цикле считал (i:=i+1), но это, кажется, долго.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
ну если записи получаете для дальнейшего использвания в коде vip, то почему нельзя считать во времянку (например sqlFetchInto) и посмотреть Recordsintable ?
Или Вы хотите получить это кол-во внутри же алгоритма объявленной Вами SQL Procedure ?
Или Вы хотите получить это кол-во внутри же алгоритма объявленной Вами SQL Procedure ?
Re: Прямой SQL
Это, конечно, один из вариантов, но не уверен, что быстрее будет. К тому же часто сталкивался, что Recordsintable показывает число записей в какой-то из таблиц представления, а не в представлении.Den писал(а):Recordsintable
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
Recordsintable всегда возвращал кол-во записей физически сколько в табле, а не с наложенными условиями в ЛОТ. По крайней мере, я не замечал косяков на эту тему.
Возможны варианты насчет считывания, но, как правило, делаю, сразу в temptable считывание, и потом уже с ней что нужно...
Возможны варианты насчет считывания, но, как правило, делаю, сразу в temptable считывание, и потом уже с ней что нужно...
Re: Прямой SQL
Делал аналогично RAJAH
Та же ошибка. Да SQLExecStmt - выдаёт ошибку 30006 - но что с этим делать?
Процедуру создал через SQL.
Вопрос решён.
Та же ошибка. Да SQLExecStmt - выдаёт ошибку 30006 - но что с этим делать?
Процедуру создал через SQL.
Вопрос решён.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Re: Прямой SQL
Доброго времени суток!
Продолжая осваивать прямой скуль в js Галактики, потребовалось делать вставку и изменение данных в таблицах.
Суть в том, что надо по определенному алгоритму изменять данные о ячейках хранения.
Пытаюсь
Во-первых, вылетаю по рантайму.
В логе Оракла имею и далее, самое интересное:
Ну и сами запросы , как видно, при разборе ораклом получают статус ошибки.
Вопрос, а как собственно вносить записи и изменять данные в таблицах прямым sql но именно в JS?
Продолжая осваивать прямой скуль в js Галактики, потребовалось делать вставку и изменение данных в таблицах.
Суть в том, что надо по определенному алгоритму изменять данные о ячейках хранения.
Пытаюсь
Код: Выделить всё
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
Вопрос, а как собственно вносить записи и изменять данные в таблицах прямым sql но именно в JS?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Прямой SQL
Синтаксис update в dsql update ..set...where
Наверное из за этого на update ругается
Наверное из за этого на update ругается
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Re: Прямой SQL
Пишу: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