Я следующий хранится процедура. Параметр FLAG_, пройденный, разрешен принимать только null, 0 или 1. Но проверка состояния (FLAG_! = 0 ИЛИ FLAG_! = 1) не работает. Я предполагаю, что это потому, что тип для FLAG_ равен NUMBER, который включает float. Есть ли способ сравнить NUMBER с INT?Oracle Хранимая процедура - как сравнить тип NUMBER с intergers?
create or replace PROCEDURE "ADD_RMV_FLAG"
(
TEXT OUT VARCHAR2
, FLAG_ IN NUMBER -- empty, 0 and 1 only values accepted.
) AS
BEGIN
-- input pramameters checking
IF FLAG_ is not null
THEN
IF (FLAG_ is not null AND (FLAG_ != 0 OR FLAG_ != 1))
THEN
raise_application_error(-20001, 'ERROR: only empty, 0 or 1 is accepted
for FLAG. Passed in ' || FLAG_);
END IF;
END IF;
END ADD_RMV_FLAE
'не work'? Я поставил свои деньги на 'OR' вместо' AND' ... – Sebas
То, что вы делаете, должно работать нормально. Тем не менее, я не считаю, что ваш код будет компилироваться, потому что в последней строке у вас есть 'END ADD_RMV_FLAE', когда имя подпрограммы -' ADD_RMV_FLAG', и имена должны совпадать. 'AND' @Sebas прав - используйте' AND' вместо 'OR'. –
@Sebas Спасибо за ваш ответ. И правильно. – user2482822