http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
공지사항  
뉴스  
질문과 답변
DBA
Developer
Cluster
토크박스  
이벤트  
서포트 티켓  
최신글
foreign key 설정…
인텍스 추가 등에…
mysql master - s…
다대다 관계에서 …
mysql my파일과 …
 
질문과 답변 (Developer) > 커뮤니티 존 > 질문과 답변 (Developer)
Procedure 질문 드립니다.
글쓴이 : darkturtle   날짜 : 14-11-24 14:33   조회수 : 5948

다른 DBMS 만 사용하다 이번에 처음으로 MYSQL 을 사용하게 되었습니다.
입력 값을 LIKE 검색 하여, 그 결과를 테이블에 저장하는 PROCEDURE 인데
에러로 없고, INSERT 도 되지 않아 질문 드립니다.
많은 조언 부탁드립ㄴ디ㅏ.


프로시져 질문 드립니다.
-----------------------------------------------------------------
-----------------------------------------------------------------
CALL CHK_TABLES('BKG_EBL_AVC');
-- 결과 확인
SELECT * FROM CHK_TABLES_T
-- 값 없음
-----------------------------------------------------------------
-- 결과 저장 테이블

CREATE TABLE CHK_TABLES_T ( TABLE_NAME VARCHAR(30), CHK_NUM INT )
-----------------------------------------------------------------
-- 프로시져 스크립트
-----------------------------------------------------------------

DELIMITER $$

DROP PROCEDURE IF EXISTS `dbsafer_log_2014_11`.`CHK_TABLES`$$

CREATE DEFINER=`root`@`%` PROCEDURE `CHK_TABLES`( IN TB_NAME VARCHAR(30))
BEGIN
  DECLARE ERR INT DEFAULT '0';
  DECLARE TARGET_NUMBER INT DEFAULT '0';
  DECLARE TARGET_TABLE VARCHAR(30);
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET ERR = -1 ;
 
  SET TARGET_TABLE = TB_NAME ;
  SET TARGET_NUMBER = ( SELECT COUNT(*) AS ALL_ROWS FROM db_qinfo WHERE UPPER(tbl_names) LIKE CONCAT('%',TB_NAME,'%') );

 START TRANSACTION ;
  SELECT TARGET_NUMBER ;
  INSERT INTO CHK_TABLES_T ( TABLES_NAME, CHK_NUM ) VALUES ( TARGET_TABLE, TARGET_NUMBER) ;

 IF ERR < 0 THEN
   ROLLBACK;
 ELSE
 COMMIT;
 END IF;
   
END$$

DELIMITER ;
royster
rollback 실행된 것으로 보입니다.

아래 구문으로 인하여  ERR 변수가  0보다 작으므로 rollback 실행..

SET TARGET_NUMBER = ( SELECT COUNT(*) AS ALL_ROWS FROM db_qinfo WHERE UPPER(tbl_names) LIKE CONCAT('%',TB_NAME,'%') );
이전글 웹서버 db서버 연결 
다음글 Table의 최종 갱신된 날짜를 구하고 싶습니다. 
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
Copyright ⓒ ssebiz All Rights Reserved.