У меня есть процедура, которая передает строковое значение, которое, в свою очередь, передается в функцию. Мне нужно создать переменную переданной строки, чтобы отразить только первые 3 символа для использования в подобном предложении where.
Не уверен, как бы я это сделал, приведенная ниже функция будет передавать in_mod, например, «abc 123 def» в моем операторе select. Я хочу эффективно использовать только первые 3 переданных символа, поэтому предложение where оценивается как And AND AW_ACTIVE_ALARMS.module LIKE абв||'%';
CREATE OR REPLACE FUNCTION OPC_OP.sitezone_msm
(in_site_id AW_ACTIVE_ALARMS.site_id%TYPE
,in_zone_id AW_ACTIVE_ALARMS.zone_id%TYPE
,in_mod AW_ACTIVE_ALARMS.module%TYPE)
RETURN NUMBER
IS
v_msm NUMBER;
BEGIN
SELECT COALESCE(MAX(AW_ACTIVE_ALARMS.weight),0)
INTO v_msm
FROM AW_ACTIVE_ALARMS
WHERE AW_ACTIVE_ALARMS.site_id = in_site_id
AND AW_ACTIVE_ALARMS.zone_id = in_zone_id
AND AW_ACTIVE_ALARMS.module LIKE in_mod||'%';
RETURN (v_msm);
END sitezone_msm;