프로시저 생성 시
OUT을 받을 것라면
프로시저 내에서 DECLARE po_result INT 를 선언하지 않아야 한다.
DROP PROCEDURE getName;
DELIMITER //
CREATE PROCEDURE getName
(OUT po_result VARCHAR(50))
BEGIN
DECLARE v_sqlstate VARCHAR(5) DEFAULT '00000';
DECLARE v_msg VARCHAR(500);
DECLARE v_err_no INT;
--DECLARE po_result INT signed DEFAULT 0; -- select로 po_result를 받을 거라면 선언하고 set로 받을거라면 선언하면 안됨.
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
GET DIAGNOSTICS CONDITION 1 v_sqlstate = RETURNED_SQLSTATE, v_err_no = MYSQL_ERRNO, v_msg = MESSAGE_TEXT;
ROLLBACK;
INSERT INTO ADMIN_DB.log_error (partkey_month, procedure_name, sql_state, msg, reg_date)
VALUES (month(sysdate()), "usp_ins_skill_index", v_sqlstate, v_msg, sysdate());
SET po_result = v_err_no * -1;
END;
BEGIN
SELECT no INTO @var1 FROM CopyT WHERE no = 1;
INSERT INTO CopyT1 VALUES (10000);
END;
SET po_result= 0;
END//
DELIMITER ;
'연구개발 > MYSQL' 카테고리의 다른 글
mysql 동적쿼리 (0) | 2015.08.05 |
---|---|
구분자 함수 (0) | 2015.07.28 |
사용자 정의 변수 (0) | 2015.06.16 |
Datetime 필드 기준 파티션 자동 관리 프로시저 (MySQL) (0) | 2015.06.11 |
federated mysql의 linked server 구현 (0) | 2015.06.10 |