powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не вставляет дробное значение.
44 сообщений из 44, показаны все 2 страниц
Не вставляет дробное значение.
    #39461960
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вот такая процедура
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE OR REPLACE PROCEDURE SALES.GET_WEIGHT_ETRAN(GROUP_ID IN NUMBER)
AS PRAGMA AUTONOMOUS_TRANSACTION;

  carTonnage    NUMBER DEFAULT 0;
  carWeightDep  NUMBER DEFAULT 0;
   
BEGIN 
   
 FOR i IN (SELECT vr.ID, vr.VNUMBER FROM SALES.VAGON_REGISTR vr WHERE vr.ID_GDN = GROUP_ID)
 LOOP 
   
   IF(i.VNUMBER is not NULL)THEN 
     
     SELECT t.carWeightDep / 10, t.carTonnage INTO carWeightDep, carTonnage FROM TABLE(SALES.RM_ETRAN.getNSICar(i.VNUMBER)) t;

     INSERT INTO SALES.SPR_TEL(ID, TEL) VALUES(carWeightDep, carTonnage);
     COMMIT;
     
    /*
     UPDATE SALES.VAGON_REGISTR vr SET vr.V_CAPACITY = carTonnage, vr.TARA_TN = (carWeightDep / 10) WHERE vr.ID = i.ID;  
     COMMIT;
    */
   END IF;
   
 END LOOP;   

END;
/



При вызове ее из IDE вот так
Код: plsql
1.
2.
3.
BEGIN
  SALES.GET_WEIGHT_ETRAN(81042);
END;



Поля carWeightDep, carTonnage вставляются полностью.

При вызове из Apex, таким же способом, поле carTonnage всегда равно NULL
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39461962
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

при вывозе функции из Delphi OraQuery1 данные также приходят полностью и вставляются нормально
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462009
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Код функции SALES.RM_ETRAN.getNSICar и возвращаемые ей типы данных предполагается узнать в отделе телепатии
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462021
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

типы NUMBER, там идет XML запрос в систему ЭТРАН. Пакет RM_ETRAN поставляется программистами ЭТРАНа
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462119
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Что это такое, опять же узнавайте в отделе телепатии.
Показывай свой xml-запрос.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462128
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Оно?
этранДополнительная информация

Конкурс «Лучший пользователь ЭТРАН»
Конкурс частушек (2012 год)
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462135
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

XML написан не мной. И функция работает отлично. Она возвращает данные все и как нужно
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462151
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323Есть вот такая процедура
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE OR REPLACE PROCEDURE SALES.GET_WEIGHT_ETRAN(GROUP_ID IN NUMBER)
AS PRAGMA AUTONOMOUS_TRANSACTION;

  carTonnage    NUMBER DEFAULT 0;
  carWeightDep  NUMBER DEFAULT 0;
   
BEGIN 
   
 FOR i IN (SELECT vr.ID, vr.VNUMBER FROM SALES.VAGON_REGISTR vr WHERE vr.ID_GDN = GROUP_ID)
 LOOP 
   
   IF(i.VNUMBER is not NULL)THEN 
     
     SELECT t.carWeightDep / 10, t.carTonnage INTO carWeightDep, carTonnage FROM TABLE(SALES.RM_ETRAN.getNSICar(i.VNUMBER)) t;

     INSERT INTO SALES.SPR_TEL(ID, TEL) VALUES(carWeightDep, carTonnage);
     COMMIT;
     
    /*
     UPDATE SALES.VAGON_REGISTR vr SET vr.V_CAPACITY = carTonnage, vr.TARA_TN = (carWeightDep / 10) WHERE vr.ID = i.ID;  
     COMMIT;
    */
   END IF;
   
 END LOOP;   

END;
/



При вызове ее из IDE вот так
Код: plsql
1.
2.
3.
BEGIN
  SALES.GET_WEIGHT_ETRAN(81042);
END;



Поля carWeightDep, carTonnage вставляются полностью.

При вызове из Apex, таким же способом, поле carTonnage всегда равно NULLЭто прелестно вызывать табличную функцию для вставки результата в два скаляра.
Комит после каждой строки тоже не свидетельство большого ума.

Ну и адекватный разработчик здесь вообще обошелся бы без циклов.
Про inset ... select слышал?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462155
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

ну давай сделай без циклов.

функция возвращает одну запись по номеру i.VNUMBER. Так же она возвращает скалярные данные.

SALES.RM_ETRAN.getNSICar(i.VNUMBER)
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462156
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

функция SALES.RM_ETRAN.getNSICar не может вернуть больше одной записи
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462161
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
TYPE NOM_WAG_RECORD IS RECORD
(
   CARTONNAGE NUMBER,
   CARWEIGHTDEP NUMBER,
);

TYPE NOM_WAG_TABLE IS TABLE OF NOM_WAG_RECORD;
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462178
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так проблема только с апексом что ли?
gera3323При вызове из Apex, таким же способом, поле carTonnage всегда равно NULLТогда рассказывайте, что в апексе делаете. Вангую, что виновата опечатка в названии итема.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462182
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич,

в Apex создана кнопка и PL/SQL anonymous block.
По нажатию кнопки вызывается

DECLARE

BEGIN
SALES.GET_WEIGHT_ETRAN(:P45_ID_GDN);
END;
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462183
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323ну давай сделай без цикловКогда у тебя что-то не получается и ты просишь помощи - лучше делать это в несколько иной форме, чтоб ее получить.
gera3323функция SALES.RM_ETRAN.getNSICar не может вернуть больше одной записиТогда смысл делать коллецию как тип результата?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462192
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

программисты этрана так сделали.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462195
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич,

фишка в том что не вставляется только carTonnage. Из Delphi вызываешь эту функцию все нормально.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462209
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

И какого же типа параметр при вызове в апексе?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462211
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

без типовый.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462221
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Код: plsql
1.
2.
3.
4.
5.
insert into sales.spr_tel(id, tel)
select t.carweightdep / 10,
       t.cartonnage
  from sales.vagon_registr vr, table(sales.rm_etran.getnsicar(vr.vnumber)) t
 where vr.id_gdn = :group_id and vr.vnumber is not null

Не самый сложный запрос, не так ли?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462222
кодерасты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никанор Кузьмич Вангую, что виновата опечатка в названии итема.более вероятно when others then null; после нлс-зависимости или нетворк_аклъ.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462228
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
BEGIN

   
 FOR i IN (SELECT vr.ID, vr.VNUMBER FROM SALES.VAGON_REGISTR vr WHERE vr.ID_GDN = GROUP_ID)
 LOOP 
   
   IF(i.VNUMBER is not NULL)THEN 
     
     SELECT t.carWeightDep, t.carTonnage INTO carWeightDep, carTonnage FROM TABLE(SALES.RM_ETRAN.getNSICar(i.VNUMBER)) t;
     
     UPDATE SALES.VAGON_REGISTR vr SET vr.V_CAPACITY = carTonnage, vr.TARA_TN = (carWeightDep / 10) WHERE vr.ID = i.ID;    
    
   END IF;
   
 END LOOP;   

 COMMIT;

END;



sales.spr_tel - это была таблица просто для вставки значений. она не используется)
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462231
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кодерасты,

функция SALES.RM_ETRAN.getNSICar NULL не возвращает
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462233
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

триггеров SALES.VAGON_REGISTR на UPDATE нет
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462251
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323env,

без типовый.

Т.е. строковый со всеми вытекающими?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462255
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

да. там в Validations указывается, что параметр только числа может содержать, если в нем будет хоть что-то отличное от числа то будет сообщение об ошибке.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462262
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Ты, разумеется, проверил, что на вход процедуре через апекс приходит корректное значение параметра?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462264
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

проверил.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462344
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Как проверял?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462350
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

хм. передал значение типа 88у4А98
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462354
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

и вообще этот поле генерируется автоматически и оно скрыто от редактирования
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462502
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323хм. передал значение типа 88у4А98
И что ты этим проверил?

Ещё раз
envТы, разумеется, проверил, что на вход процедуре через апекс приходит корректное значение параметра?
Изнутри процедуры ты убедился, что при вызове через IDE и при вызове через апекс параметр приходит идентичный? Что на вход внутреннему запросу уходит тот же самый параметр? Что у тебя по дороге нет неявных NLS-зависимых преобразований типов?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462566
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

Да, я убедился что данные передаются верно. Я использовал таблицу SALES.SPR_TEL. В нее я вставлял эту переменную, значение ее.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462613
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323
При вызове из Apex, таким же способом, поле carTonnage всегда равно NULL

тут я не очень понял carTonnage это поле или переменная?

Как я погляжу на исходный селект, понять что carTonnage (как переменная) дробная, очень сложно. Она точно приходит из getNSICar как дробный number?

а нет ли у тебя такого ПОЛЯ carTonnage в таблице VAGON_REGISTR или SPR_TEL.

P.S. Мой тебе ОГРОМНЫЙ совет, не называй переменные как поля в таблице, хрен поймешь что подставят селекты в селекты извини за товталогию
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39462994
user1241
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gera3323,

Используй универсальное средство отладки raise_application_error.
Сузь область поиска ошибки до одного запроса.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463003
user1241
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+ если есть где-то преобразование строки в число см.

Код: plsql
1.
2.
3.
4.
select * from nls_session_parameters t
where parameter = 'NLS_NUMERIC_CHARACTERS'

execute immediate q'?alter session set NLS_NUMERIC_CHARACTERS = '.,'?';
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463035
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user1241,

Спасибо, заработало))
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463063
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

Тебе об этом вторую страницу говорят
envЧто у тебя по дороге нет неявных NLS-зависимых преобразований типов?

Но ты продолжай раскладывать грабли с форума, не понимая причин.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463081
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

ты даже близко к решение не попал
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463096
user1241
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gera3323,

Вообще-то верно env пишет.
Если на входе bind переменная типа varchar2 (а в апексе они все varchar2) с дробным значением, а в функции number => преобразование и кривое значение внутри запросто. Вместо alter session, чтобы не портить другие обработки см. лучше 3-тий параметр в to_number.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463098
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user1241,

да, но нигде varchar2 не используется. используется только number, во всех таблицах
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463116
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323да, но нигде varchar2 не используется.user1241Вообще-то верно env пишет.
Если на входе bind переменная типа varchar2 (а в апексе они все varchar2)
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463140
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user1241,

Бесполезно объяснять бушмену, почему нельзя попасть стрелой в Солнце.
Он так и будет смотреть на свои таблицы, видеть там number и не понимать, как у него данные от апекса приходят. alter sesson же решил его локальную проблему, значит проблемы больше нет. Зачем устранять её причину, следствие же устранено. А к чему могут привести изменения на уровне сессии - ТС думать не хочет или не умеет.
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463167
gera3323
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

каким образом у меня данные из Apex приходят? У меня метод только с параметром вызывается. Ты начало читал или ты слеп ?
...
Рейтинг: 0 / 0
Не вставляет дробное значение.
    #39463296
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gera3323,

У меня метод только с параметром вызывается
О чём тебя сразу и спросили - с параметром какого типа данных.
Если ты не понимаешь, что такое типы данных, почему происходят преобразования одного типа в другой, почему они бывают явные и неявные и в чём это может отразиться на итоговом результате, то стоит отложить разработку на любом языке - это не твоё.

Не зная основ, ты будешь любую очевидную ошибку воспринимать как магию и применять предложенные "заклинания" не понимая, что это такое, почему оно исправляет твою проблему "здесь и сейчас" и на что ещё это может повлиять.

А попутно, своё упорство в собственном невежестве ты будешь выражать хамством. Как сейчас.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не вставляет дробное значение.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]