2017-12-17 31 views
1

는 숫자의 역순을 찾기 위해 다음 저장 프로 시저를 사용했지만 오류를 표시합니다. 가까운 구문을 사용하여 가까운 루프를 사용합니다. 코멘트에서 언급 한 바와 같이mysql에서 숫자의 역방향

DELIMITER // 

CREATE PROCEDURE ggrepeat1() 

begin 

declare num1 int; 

declare num2 int; 

declare rev int default 0; 

set @num1:='&num1'; 

while num1>0 

loop 

set @num2:=num1 mod 10; 

set @rev:=num2+(rev*10); 

set @num1:=floor(num1/10); 

end loop; 

dbms_output.put_line('Reverse number is: '||rev); 

end// 

DELIMITER ; 
+2

이 보인다 될 수 있습니다. 그것은 분명히 작동하지 않을 것입니다. MySQL에서는 PL/SQL을 사용할 수 없습니다. – sstan

답변

0

MySQL의에서 while 루프는이 같은 사용해야합니다.
이 첫 번째 문제

while n>0 do 
    content.. 
end while 

두 번째 문제는 위의 코드를 사용할 수 없습니다 MySQL의에서

dbms_output.put_line('Reverse number is: '||rev); 

입니다에게 있습니다.
대신이

Select 'The reverse of number is 'rev; 

그래서 코드는 오라클과 MySQL의 구문을 혼합하는 것처럼

DELIMITER // 

CREATE PROCEDURE ggrepeat1() 

begin 

declare num1 int; 

declare num2 int; 

declare rev int default 0; 

set @num1:='&num1'; 

while num1>0 do 

set @num2:=num1 mod 10; 

set @rev:=num2+(rev*10); 

set @num1:=floor(num1/10); 

end while; 

Select 'Reverse number is: 'rev; 

end// 

DELIMITER ; 
+0

사용자 입력을 받아들이는 방법, set num1 : = '& num1'명령이 작동하지 않습니다. – SRG

+0

'&'는 mysql에서 오라클과 작동하지 않습니다. 매개 변수로 전달해야합니다. –

+0

'반대 번호는 다음과 같습니다.'rev ; 숫자 – SRG

1

, 당신은 구문을 사용할 수 없습니다. 어쨌든, 나는 네가 지나치게 복잡하게 생각하는 것 같아. 더 간단한 방법은 숫자로, 문자열로 전화 번호를 캐스팅 내장 함수를 사용하여 반대하고 다시 캐스팅하는 것 :

CREATE FUNCTION reverse_int(num INT) 
RETURNS INT DETERMINISTIC 
RETURN CAST(REVERSE(CAST(num AS CHAT)) AS INT);