2015-09-15 2 views
0

Я использую PL/SQL Developer, используя тестовое окно, чтобы протестировать хранимую процедуру, которая принимает значение типа Number. Значение, которое я передаю в Хранимой процедуре, - 37788024213340161. Однако я заметил, что PL/SQL преобразует это значение в научную нотацию и округляет вверх, а вместо этого переходит на другое значение в хранимую процедуру: (3.77880242133402E16)Окно тестирования разработчика PL/SQL для хранимой процедуры превращает числовое значение в научную нотацию

Таким образом, при выполнении хранимой процедуры он заканчивается использованием округленного значения, а не значения, которое я использовал для его использования. Значение, которое заканчивается тем, что передается в хранимую процедуру, равно 37788024213340200. Если последние 3 числа должны были быть 161, но PL/SQL Developer округлены, а теперь значение равно 200.

Есть ли способ установить предпочтения в PL/SQL Developer, поэтому он не изменит значение использования научной нотации в тестовом окне?

enter image description here

ответ

0

О еще одна вещь, вы можете попробовать сделать, чтобы просмотреть полное значение в тесте Окно PL/SQL Developer является для переключения типа с «поплавком» в «строка»

+0

Я попробовал ваше предложение изменить тип в тестовом окне от float до string, и это сработало! Теперь правильное значение передается в хранимую процедуру. Благодаря! – AndeeC

0

Число правильно хранится в базе данных. Проблема только в том, как они отображаются вам.

У меня нет доступа к разработчику PL/SQL прямо сейчас. Но, я думаю, вы можете попробовать это: В диалоговом окне настроек настроек разработчика PL/SQL установите флажок «Число полей to_char» на вкладке «Окно SQL».

+0

У меня уже есть «количество полей to_char "установлен. Даже с этим набором настроек тестовое окно все еще преобразует значение в научную нотацию и передает значение научной нотации в хранимую процедуру. – AndeeC

+0

В Oracle вы можете использовать тип данных [число (точность, масштаб)] (http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#i16209) вместо номера. точность показывает общее количество цифр и шкалы - это число цифр справа от десятичной точки. Возможно, установка масштаба на количество цифр в Int64.MaxValue устранит проблему. – SaraNa

0

Попробуйте это временное решение

:numStr := to_char(:gecid); 

Это добавит выходные параметры "NumStr". Чтобы увидеть numStr в списке переменных, нажмите стрелку (белая стрелка черного круга). Для параметра output вам не нужно будет объявлять их.

+1

Еще одна вещь, которую вы можете попытаться сделать, чтобы просмотреть полное значение в тестовом окне PL/SQL Developer, - это переключить тип с «float» на «string» – Zombie012345

+0

. Проблема в том, что значение, которое я передаю в хранимую процедуру модифицируется разработчиком PL/SQL. Я хотел бы узнать, есть ли способ остановить PL/SQL-разработчик от округления значения вверх, чтобы хранимая процедура использовала правильное значение, которое я намеревался использовать. – AndeeC

+0

Я попробовал ваше предложение изменить тип в тестовом окне от float до строки, и это сработало! Теперь правильное значение передается в хранимую процедуру. Благодаря! – AndeeC