일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 외계행성의 나이 자바
- 스프링 부트 프로젝트 세팅
- 숨어있는 숫자의 덧셈 (1) 자바
- string과 stringbuilder 성능 최적화
- string과 stringbuilder의 차이점
- 소인수분해 구하는 공식
- 프로그래머스
- 티스토리챌린지
- 자바 팩토리얼
- 자바 합성수 찾기
- 스프링부트 의존성 설정
- 배열 순환 자바
- 자바 소인수분해
- 경우의 수 자바
- 배열 순환
- string과 stringbuilder
- 접속 url 출력
- 배열 순환 문제 공식
- 프로그래머스 문자열 정렬하기(1)
- stringbuilder란
- 펙토리얼
- string과 stringbuilder 성능 차이
- 스프링 부트 배너 설정
- 개미 군단 자바
- 모스부호(1) 자바
- 오블완
- string과 stringbuilder의 차이
- 프로그래머스 공 던지기 게임
- spring boot 배너 설정
- 왓챠피디아 클론 코딩
- Today
- Total
여름 언덕에서 배운 것
프로시저에서 쓰는 변수 본문
코딩애플 온라인 강좌 - 개발자도 단기완성!
단연 NO1 강사님의 NO.1 강의 역시나 명강입니다. IT 업계의 대치동 NO1. 강사같은 엄청난 강의력. 코딩애플님의 강의는, 엄청나게 기초적인 것부터 가르치는 듯 보이지만, 실제로 다루는 깊이는 절
codingapple.com
자료를 잠깐 저장하고 싶으면 변수를 사용하자.
변수 문법
SET @변수명 = 저장할값;
SET @변수명 := 저장할값;
SELECT @변수명 := 저장할값;
프로시저는 긴 SQL문을 한 단어로 축약,
변수에는 숫자,문자,binary,null 자료 1개만 저장 가능
SET @age = 20;
SELECT @age;
20이 출력된다.
SET @price = 6000;
SELECT * FROM product WHERE 가격 = @price;
가격이 6000인 상품을 가져오라는 뜻이다.
SET @price = (SELECT COUNT(*) FROM product WHERE 가격 = 5000)
서브쿼리를 넣어도 상관이 없다.
SET @age = 20;
SET @age = @age + 1;
SELECT @age;
21이 출력된다.
프로시저 안에서 변수 선언하기
CREATE PROCEDURE mart.var_test()
BEGIN
DECLARE 변수1 INT;
DECLARE 변수2 VARCHAR(100);
DECLARE 변수3 INT DEFAULT 123;
END
DECLARE 변수명 데이터타입; 로 정의하며 여기서는 @ 안써도 된다.
default는 초기값 설정해주고 싶을 때 사용한다.
DECLARE 로 만든 변수에 데이터 저장시엔 똑같이 SET 키워드로 변수에 마음대로 데이터 저장가능
DECLARE 변수 vs @변수 차이점
@변수는 전역변수로 한번 만들면 DBMS 프로그램이 종료될때 까지 남아있으면 전역 sql 파일에서 사용가능하다.
DECLARE는 지역변수로 변수를 만든 프로시저 내에서만 사용 가능합니다. 프로시저 종료시 바로 사라진다.
DROP PROCEDURE IF EXISTS mart.var_test;
DELIMITER $$
CREATE PROCEDURE mart.var_test()
BEGIN
DECLARE 나이 int DEFAULT 10;
SET 나이 = 나이 + 10;
SELECT 나이;
END
$$
DELIMITER ;
CALL mart.var_test();
CALL mart.var_test();
CALL mart.var_test();
CALL 3개 모두 20이 출력됩니다! 20,30,40이 아니다
procedure는 실행할 때 마다 DECLARE 변수는 리셋된다
DROP PROCEDURE IF EXISTS mart.var_test;
DELIMITER $$
CREATE PROCEDURE mart.var_test()
BEGIN
SET @나이 = @나이 + 10;
SELECT 나이;
END
$$
DELIMITER ;
SET @나이 = 10;
CALL mart.var_test();
CALL mart.var_test();
CALL mart.var_test()
1.나이 변수를 프로시저가 아닌 바깥에 먼저 선언
2.20,30,40 순으로 출력된다.
3. 왜냐면 한번 @변수로 선언하면 프로그램 종료시까지 남아있어서 가능하다.
숙제🍎
'가랑비에 옷 젖는 줄 모른다 💻 > SQL & DB' 카테고리의 다른 글
SQL 날짜,시간 (0) | 2023.08.12 |
---|---|
프로시저 많이 만들기 싫으면 파라미터 (0) | 2023.08.10 |
저장프로시저 이용하기(stored procedure) (0) | 2023.08.09 |
View, 너무아름다운다운다운 (0) | 2023.07.31 |
Union , union 과 join의 차이 (0) | 2023.07.31 |