实现过程如下
Create Or Replace Function f_Get_2n(p_Num Number) Return Number Is
v_Flag Number(4);
r_Binstr Number(38);
l_Num Number := p_Num;
v_Length Number(38);
v_Mid Number(2);
Begin
While l_Num != 0 Loop
r_Binstr := To_Char(Mod(l_Num, 2)) || r_Binstr;
l_Num := Trunc(l_Num / 2);
End Loop;
Select Substr(r_Binstr, 0, 1) Into v_Mid From Dual;
Select Length(Translate(r_Binstr, 'a1', ' ')) Into v_Length From Dual;
If v_Mid = 1 And v_Length = Length(r_Binstr) - 1 Then
v_Flag := 1;
Else
v_Flag := 0;
End If;
Return v_Flag;
End;