본문 바로가기
개발일지/SQL

[Mysql] VIEW, STORED PROCEDURE (뷰, 스토어드 프로시저)

by 개발에정착하고싶다 2022. 10. 3.
320x100

#1

 

VIEW만들기

 

CREATE VIEW uv_memberTBL AS

SELECT memberName, memberAddress FROM memberTBL;

 

보아하니 해석하자면 이런것같다.

 

uv_memberTBL라는 VIEW를 만들어줘

그 내용은

SELECT 이하내용으로해줘.

 

VIEW를 사용하는 이유는 100% 명확한것은 아니지만

정황상

SELECT로써 접근은하게끔해서 결과물로 보여주긴 해야하는데, 수정되면 안되는 특이성이 있기때문에

원본이 있는 테이블의 접근권한보다는 VIEW의 접근권한이 더욱 허들이 낮다고 보인다.


#2

 

스토어드 프로시저

mysql에만 있는 기능같은데, 지금은 오히려 더 번거로워 보인다.

근데 있는 이유가 있겠지?

 

SELECT * FROM memberTBL WHERE memberNAME = '당탕이';

SELECT * FROM productTBL WHERE productNAME = '냉장고';

이 두개의 명령문에 대해서 한개의 명령문으로 만들어주기 위해서

스토어드 프로시저라는 기능을 사용한다고 한다.

 

음…. 우선 내가 배운 코드는

 

DELIMITER //

CREATE PROCEDURE myProc()

BEGIN

SELECT * FROM memberTBL WHERE memberNAME = '당탕이';

SELECT * FROM productTBL WHERE productNAME = '냉장고';

END //

DELIMITER;

 

이러하고, 작동은 되었는데 작동과 동시에 에러가 떴다.

그 이유인 즉슨 문법 에러였고

 

//는 ;과 같은 기능이라고 한다.

왜 해주는 지는 모르겠고 mysql 공식문서에서 본것을 응용하자면

 

DELIMITER //

CREATE PROCEDURE myProc()

BEGIN

SELECT * FROM memberTBL WHERE memberNAME = '당탕이';

SELECT * FROM productTBL WHERE productNAME = '냉장고';

END //

 

그냥 이렇게 하는게 맞는 문법인것 같다.

 

참조:

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

 

프로시저를 실행하는것은 SELECT 가 아니였고 CALL이였다.

 

CALL myProc();

이렇게

300x250