일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링
- 다운캐스팅
- IBatis procedure
- Random
- Validations
- jquery
- 25가지 효율적인 sql작성법
- 페이징
- Login with OAuth Authentication
- 가변인자
- 업캐스팅
- 추상클래스
- 야구게임
- 다형성
- 로또
- while
- 형변환
- Full text
- 이클립스
- 자바
- 자바 야구게임
- 전체텍스트
- 단축키
- 전체
- full text indexing
- 전자정부
- angular2
- 상속
- 상속예제
- Today
- Total
nalaolla
MySQL Stored Procedure 본문
MYSQL Stored Procedure 생성(mysql 변수 이용)
/*********************************************************************
sp_get_RecordAds_Info_count(searchType int(10), searchText varchar(10));
searchType : 0(전체) 1(광고Tag)
=> return string[]
string[0] : 광고 id
string[1] : 광고Tag
*/*********************************************************************/
Drop procedure if exists sp_get_RecordAds_Info;
DELIMITER |
CREATE PROCEDURE sp_get_RecordAds_Info(searchType int(10), searchText varchar(10), stval int, retcnt int)
BEGIN
//변수를 선언하는 문장
DECLARE mysql varchar(2000);
DECLARE tempVariable varchar(10);
//변수 값을 할당
set tempVariable = '';
// concat : 문자열을 합쳐주는 mysql 내장함수이다.
set mysql = concat(mysql, 'select AD_ID, AD_Tag ');
set mysql = concat(mysql, 'from ADs, ');
set mysql = concat(mysql, '(select AD_ID, ADCn_ID from AdContents ) adcnInfo ');
// 문자열 내의 '를 인식시키기 위해 \' 로 표기한다.
// limit A, B : mssql의 top과 비슷한 기능을 하는 것으로 몇번째 레코드(A) 부터 몇개(B)를 가져온다.
set mysql = concat(mysql, 'where ADs.AD_ID_PK = adcnInfo .AD_ID and AD_Tag like concat(\'%\', ? ,\'%\') limit ?,? ');
//set @변수명 : 프리페어드구문(prepared) : 여러 비슷한 쿼리를 실행하기 위해, 서버와 클라이언트 사이의 트래픽이 적다는 장점
// set @변수명 -> @변수 정의 문법
set @execlimitmysql = mysql;
set @execlimitSearchText = searchText ;
set @execlimitstrSearchAll = tempVariable;
set @execlimitstval = stval;
set @execlimitretcnt = retcnt;
/* 전체 보여주기 */
if(searchType = 0) then
BEGIN
prepare stmt from @execlimitmysql;
// ? 순서대로 들어갈 값을 가진 변수명 나열
execute stmt using @execlimitstrSearchAll, @execlimitstval, @execlimitretcnt;
Deallocate prepare stmt;
END;
end if;
/* 광고Tag 로 검색 */
if (searchType = 1) then
BEGIN
//프리페어드 구문 실행
prepare stmt from @execlimitmysql;
execute stmt using @execlimitSearchText, @execlimitstval, @execlimitretcnt;
//자동으로 지워지지만 확실히 삭제하기 위해 deallocate prepare
//drop prepare 구문 사용 가능
Deallocate prepare stmt;
END;
end if;
END |
DELIMITER ;
/*--------------------------------------------------------------------*/
//단일행 주석 : --
-- call web_get_RecordAds_Info(1,'코카');
drop procedure if exists web_get_RecordAds_Info;
DELIMITER |
CREATE PROCEDURE WEB_GET_RECORDADS_INFO(searchType int(10), searchText varchar(10), stval int, retcnt int)
BEGIN
call SP_GET_RECORDADS_INFO(searchType, searchText, stval, retcnt) ;
END |
DELIMITER ;
'MYSQL' 카테고리의 다른 글
MySQL 명령어 정리 (0) | 2015.12.20 |
---|---|
MySql 데이터 타입 (0) | 2015.12.20 |
MySQL 기본적인 명령어 (0) | 2015.12.20 |
MySQL case when (0) | 2015.12.20 |
MySQL 자체 메뉴얼 활용하기 (0) | 2015.12.20 |