Plsql 代码>空值。优点;我把它留在这里,这样OP就可以看到这个,并计算出他们本来是怎么写代码的,但是你的答案是正确的,特别是如果他们想传递小数或负值。请注意MT0对负数或小数的评论。是的,但要求不是负数或小数点,它只是拔出了最大的数字。 FUNCTION FBI
Plsql 代码>空值。优点;我把它留在这里,这样OP就可以看到这个,并计算出他们本来是怎么写代码的,但是你的答案是正确的,特别是如果他们想传递小数或负值。请注意MT0对负数或小数的评论。是的,但要求不是负数或小数点,它只是拔出了最大的数字。 FUNCTION FBI,plsql,oracle11g,Plsql,Oracle11g,代码>空值。优点;我把它留在这里,这样OP就可以看到这个,并计算出他们本来是怎么写代码的,但是你的答案是正确的,特别是如果他们想传递小数或负值。请注意MT0对负数或小数的评论。是的,但要求不是负数或小数点,它只是拔出了最大的数字。 FUNCTION FBIG(N NUMBER) RETURN NUMBER IS R NUMBER; M NUMBER; S NUMBER; BEGIN M := N; WHILE M>0 LOOP R := MOD(M,1
代码>空值。优点;我把它留在这里,这样OP就可以看到这个,并计算出他们本来是怎么写代码的,但是你的答案是正确的,特别是如果他们想传递小数或负值。请注意MT0对负数或小数的评论。是的,但要求不是负数或小数点,它只是拔出了最大的数字。
FUNCTION FBIG(N NUMBER) RETURN NUMBER
IS
R NUMBER;
M NUMBER;
S NUMBER;
BEGIN
M := N;
WHILE M>0 LOOP
R := MOD(M,10);
M := FLOOR(M/10);
S := GREATEST(R,M);
END LOOP;
RETURN S;
END FBIG;
END;
/
EXEC DBMS_OUTPUT.PUT_LINE(FBIG(47839));
SQL> create or replace function fbig (n number)
2 return number
3 is
4 retval number;
5 begin
6 select max(num)
7 into retval
8 from (select substr(to_char(n), level, 1) num
9 from dual
10 connect by level <= length(n)
11 );
12
13 return retval;
14 end;
15 /
Function created.
SQL> select fbig(47839) res1,
2 fbig(125.774) res2
3 from dual;
RES1 RES2
---------- ----------
9 7
SQL>
CREATE FUNCTION FBIG(N NUMBER) RETURN NUMBER
IS
s CONSTANT VARCHAR2(4000) := TO_CHAR( n );
c CHAR(1);
m CHAR(1) := NULL;
BEGIN
FOR i IN 1 .. LENGTH( s ) LOOP
c := SUBSTR( s, i, 1 );
IF c = '.' THEN
EXIT;
ELSIF m IS NULL OR c > m THEN
m := c;
END IF;
END LOOP;
RETURN TO_NUMBER( m );
END FBIG;
/
M := N;
WHILE M>0 LOOP
R := MOD(M,10);
M := FLOOR(M/10);
S := GREATEST(R,M);
END LOOP;
CREATE FUNCTION FBIG(N NUMBER) RETURN NUMBER
IS
s NUMBER(1,0) := NULL;
r NUMBER(1,0) := NULL;
m NUMBER := FLOOR( ABS( n ) );
BEGIN
WHILE m > 0 LOOP
r := MOD( m, 10 );
IF s IS NULL OR r > s THEN
s := r;
END IF;
m := ( m - r ) / 10;
END LOOP;
RETURN s;
END FBIG;
/
FUNCTION fbig(n NUMBER) RETURN NUMBER IS
r NUMBER;
m NUMBER;
s NUMBER := 0;
BEGIN
m := n;
WHILE m > 0
LOOP
r := MOD(m, 10);
m := floor(m / 10);
s := greatest(r, s);
END LOOP;
RETURN s;
END fbig;
/