728x90

while문 해보려는데..

나와같은 의문을 가지신 분

프로시저 꼭 만들어서 써야돼?

https://stackoverflow.com/questions/12954095/mysql-declare-while-outside-stored-procedure-how

 

mysql DECLARE WHILE outside stored procedure how?

I fairly new to mysql but have MS SQL experience. Is it possible to declare variables and use while statement outside stored procedure? I only found examples where guys doing like this 1. proced...

stackoverflow.com

안된데 따흑.

https://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html

^공식문서...

 

 

방금 스택오버 따라서 코드 처보는데

DELIMITER 

이거 맨앞에 넣어야 빨간줄 안뜨네

너 뭐야..

 

공식문서가 말하길,,

"기본적으로 mysql 자체는 세미콜론을 명령문 구분 기호로 인식하므로 mysql 이 전체 ​​저장 프로그램 정의를 서버에 전달하도록 하려면 구분 기호를 일시적으로 재정의해야 합니다.

mysql 구분 기호 를 재정의하려면 delimiter명령을 사용하십시오. //전체 정의를 단일 명령문으로 서버에 전달한 다음 ;프로시저를 호출하기 전에 로 복원할 수 있도록 구분 기호가 변경됩니다 . 이렇게 하면 프로시저 본문에 사용된 구분 기호가 mysql 자체 ; 에서 해석되지 않고 서버로 전달될 수 있습니다."

 

어 그렇구나..(이해못함)

https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

 

식 사이를 구분지어주는 거같음

 

아니!! 근데!!! 아무것도 안나와 

-> 계속 생기고 뭐지

세미콜론으로 끝내려는데도 안됨

뭘까..?

 

 

 

 

 

아하!

 

MySQL 콘솔창은 쌍반점(;)이 입력되면 어떤 경우에서건 일단 쌍반점(;) 이전 단계까지 명령문을 실행하게 됩니다.

구분 문자(;) 변경하기

명령분이 완성되지 않은 상태에서 실행되면 곤란합니다. 저장 프로시저에서 END를 입력하고 나서 CREATE PROCEDURE 명령이 실행되도록 환경을 변경해야 합니다.

 

그러려면 저장 프로시저를 작성하기 전에 구분 문자를 쌍반점(;)이 아닌 다른 문자로 변경해 둡니다. 일반적으로는 //을 사용합니다.

 

구분 문자를 //으로 변경할 때에는 DELIMITER 명령을 사용합니다.


맨 마지막의 DELIMITER ;는 구분 문자를 원래대로 되돌려 놓는 명령입니다. 구분 문자를 쌍반점(;)으로 되돌려 놓는 것을 잊지 않도록 합니다.

출처: https://recoveryman.tistory.com/186 [회복맨 블로그]  회복맨, 당신은 최고의 정리맨이자 설명맨입니다. 짱짱~


 

DELIMITER 가 구본문자를 바꾸는 명령어구나

구본문자를 세미콜론에서 //이걸로 바꿔놓고 

안된다고 하고 있었구나....ㅋㅋㅋㅋㅋㅋ

 

 

 

DELIMITER //
create procedure pro()
begin 
select name from sequence;
select deposit_date from sequence;
end
//




DELIMITER ;

call pro;

 

 

삭제하고 다시 만들어봐야지

 drop procedure if exists 프로시저 이름;

 

 

임의로 값 넣어놓음

 

DELIMITER //

구본문자//로 바꾸고

create procedure pro(d int)

프로시저 pro만들고 int형 인수d들어가게끔 사용할거임
begin 

시작
select * from sequence where interest_amount < d;

다가져와 seuquence 테이블에서 interest_amount가 d보다 작은 것중에서
end


//

프로시저 끝


DELIMITER ;

구본문자 다시 ;로 바꿈

call pro(3);

프로시저 실행. 인수에 3넣고 (3보다 작은 interest_amount 가져올거임)

 

 

 

 

이제 다시 while문 해봐야지..

 

https://recoveryman.tistory.com/186

 

[MySQL & PHP] 12장 저장 프로시저 활용하기

정리 1. 저장 프로시저의 의미와 작성 방법 1. 저장 프로시저란? 1.1 이용할 수 있는 버전 저장 프로시저를 학습하기 전에 MySQL의 버전을 확인하도록 합니다. 저장 프로시저는 MySQL 버전 5.0 이상에

recoveryman.tistory.com

 

이글은 보고 또 봐야지.. 뒤에는 다 안해봄!

 

 

 

 

728x90
728x90

커널kernel과 사용자간의 다리역할

사용자가 시스템에 로그인 시 각 사용자에게 설정된 쉘이 부여

 

쉘종류

쉘 확인하기 

echo $SHELL

대문자로 해야됨요

 

bash shell 예약 변수

 

리눅스 쉘은 

xterm에서 구동된다

bash shell프롬프트 구성

 

리눅스 환경에서는 사용자마다 다른 쉘을 지정할 수 있다

 

쉘확인해보기

echo $SHELL

cat /etc/shells

 

어떤 쉘이 쓰고있나 확인 etc 안에.

여기 있는 걸로 골라서 바꿔 쓸 수 있다는 뜻임

 

쉘 바꾸기

chsh  (체인지 쉘)

바꿀애를 저렇게 넣어주면 됨

현재는 bash를 쓰지만 

dash로 바꾸고 싶으면 

/bin/dash

 

창 껐다가 켜야 적용됨

다시 켜서

 

dash는 앞에 애들이 안보이는 쉘

 

다시 바꿔서 원래꺼 쓰자~~

 

 

 

에러 

su: failed to execute /bin/bash/: Not a directory

나도 해보는데 이상하게 하고 나서 

sudo su - 가 안됐음

 

bash로 바꾸긴 했는데 (지금보니까 입력한 /bin/bash는 문제가 없는데 이전에 잘못넣었나봄 )

이제 슈퍼모드로 쓸라고 했는데 안돼

su 안돼

 

해결어떻게 했냐

sudo vi /etc/passwd

들어가면 

안에 계정 잔뜩 보임

 

거기 보니까 루트에 bash옆에 슬래시 있었음

i로 수정모드로 슬래시 지워줌

 

 

그러니까 잘됨~~

 

 

쉘 여러 명령 사용

 

쉘 한주에 255자까지 가능 명령어.

복잡한 명령어를 만들어놓은걸

쉡스크립트 만들어 놓으면 반복해서 사용할수 있다

 

;

여러 명령어 쓸때 세미콜론; 으로 구분함

성공,실패와 관련없이 전부 실행

명령1; 명령2;

 

 

&&

 

실패하면 그 뒤 명령어는 실행하지 않음

 

 

 

 

 

 

728x90

+ Recent posts