반응형

프로시저 생성 시

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

+ Recent posts