Я пишу хранимую процедуру для моего проекта.Хранимая процедура должна обновлять значение.тип этого значения определяется как number(6,3)
.
моя хранимая процедура выглядит примерно так:
create procedure procedure_name(id number, length number)
as a boolean;
BEGIN
update "tablename" tbl
set "length" = length
where tbl."id" = id;
commit;
END;
Затем я вызываю функцию следующим образом: execute procedure_name(1, 0.8)
Это дает мне ошибку преобразования.Я также пробовал десятичное число, но оно все равно дает ошибку преобразования.Я даже пытался определить параметр следующим образом: tablename.columnname%type
, но он не работал
Я получаю сообщение об ошибке:
ORA-06502: PL / SQL: figurerieke foutfout in waarde: ошибка преобразования символа в число.
ORA-06512: в regel 1
00000 - «PL / SQL: ошибка числа или значения% s»
Причина: Произошла ошибка арифметического, числового, строкового преобразования или преобразования ограничения.Например, эта ошибка возникает, если предпринята попытка присвоить значение NULL переменной, объявленной NOT NULL, или если предпринята попытка присвоить целое число больше 99 переменной, объявленной NUMBER (2).
Действие: Измените данные, как они обрабатываются или как они объявлены, чтобы значения не нарушали ограничений.
Можно попытаться использовать следующий фрагмент кода для воссоздания базы данных:
CREATE TABLE "tablename"
(
"id" NUMBER(12,0) NOT NULL ENABLE,
"length" NUMBER(6,3)
) SEGMENT CREATION IMMEDIATE
У кого-нибудь есть идеи, почему это не работает?
С уважением
EDIT
Вызов процедуры из моего приложения работает.Непосредственный вызов этого в SQL не удается, но кажется, что вызов процедуры с использованием C # работает.Мое приложение работает в ASP.NET Core, и я сопоставляю двойное значение с OracleDbType.Double