간단 한 저장 프로시저 및 확장
4777 단어 sql
1. 창설
drop PROCEDURE if EXISTS test; create procedure test(in inputParam VARCHAR(32), OUT outParam VARCHAR(32))
begin
if inputParam=1 then
SET outParam = '2';
ELSE
SET outParam = '4';
END IF;
end ;
2. calltest ('1', @ new) 를 호출 하고 표시 합 니 다.
select @new;
저장 함수
1. 저장 함수 만 들 기
drop function if EXISTS f1;
create function f1(inputParam VARCHAR(32)) RETURNS varchar(255)
begin
DECLARE x VARCHAR(255) DEFAULT '';
if EXISTS(select userId from web_user where userId = inputParam) then
set x = 1;
ELSE
set x = 2;
END IF;
RETURN x;
end ;
2. 메모리 함수 호출
select f1('00304490ec2f48959f98dc2e06783403');
저장 프로 세 스 는 저장 함 수 를 호출 할 수 있 고 저장 함 수 는 저장 프로 세 스 를 호출 할 수 없습니다.
프로젝트 수요 에 따라 쓰 는 저장 과정
1. 수요, 로봇, 실물, 모두 구 매 기록 이 있 습 니 다. 로봇 과 실물 은 두 개의 시계 이 고 각자 의 사용자 정 보 를 저장 합 니 다. 구 매 기록 은 하나의 시계 이 고 로봇 과 실물 은 모두 userId 가 있 으 며 중복 되 지 않 습 니 다.
요구 에 따라 구 매 기록 을 찾 아 구 매 사용자 의 관련 정 보 를 찾 아 냈 다.
2. 저장 프로시저 구현:
drop PROCEDURE if EXISTS test0; create procedure test0(in time varchar(64), timeMin varchar(64), mill INT) BEGIN /**변수, 변수 이름 이 커서 에 대응 하 는 필드 이름과 이름 을 바 꿀 수 없 음 을 주의 하 십시오!그렇지 않 으 면 변수 이름 에 값 을 부여 하 는 데 실패 합 니 다! * /DECLARE userId1 varchar(32); DECLARE userName1 varchar(32); DECLARE userCode1 varchar(32); DECLARE headImg1 varchar(32); DECLARE IP1 varchar(32); DECLARE location1 varchar(255); DECLARE payTime1 varchar(64); DECLARE millisecond1 INT; DECLARE detailId1 INT; DECLARE done INT DEFAULT FALSE; /**커서 에 대응 하 는 sql * / DECLARE mycur CURSOR FOR SELECT userId, IP, location, payTime, millisecond, detail IdFROM webpay_log where UNIX_TIMESTAMP(payTime)*1000+millisecond <= UNIX_TIMESTAMP(time)*1000+mill and payTime > timeMin order by payTime desc, millisecond desc limit 0 , 50;
/ * 끝 표 지 를 커서 에 연결 합 니 다. * / DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; / * *임시 표 * / DROP TABLE IF EXISTS temp; create temporary table if not exists temp ( userId varchar(32) primary key, userName varchar(32), userCode varchar(32), headImg varchar(32), IP varchar(32) , location varchar(255), payTime varchar(64), millisecond INT, detailId INT ); truncate TABLE temp; / * * 커서 열기 * / OPEN mycur; /**옮 겨 다 니 며 변수 에 값 을 부여 하고 임시 표 * / emp loop: LOOP 에 저장 합 니 다. FETCH NEXT from mycur INTO userId1,IP1,location1,payTime1,millisecond1,detailId1; if done THEN leave emp_loop; end if; IF EXISTS(select robot.userId from web_robot robot where robot.userId = userId1) THEN select robot.userName, robot.userCode, robot.headImg into userName1, userCode1, headImg1 from web_robot robot where robot.userId = userId1; ELSE select us.userName, us.userCode, us.headImg into userName1, userCode1, headImg1 from web_user us where us.userId = userId1; END IF; insert into temp values(userId1 ,userName1 ,userCode1 ,headImg1 ,IP1 ,location1 ,payTime1 ,millisecond1 ,detailId1 ); end loop;
/ * * 커서 닫 기 * / CLOSE mycur;
/ * * 출력 * / select * from temp;
/ * * 임시 테이블 삭제 * / DROP TABLE IF EXISTS temp; END
저장 프로시저 호출 test 0 ("2016 - 12 - 12 11: 45: 57", "2016 - 12 - 08 17: 22: 36", 966)
4. 자바 코드 호출 저장 프로시저 (mybatis, 주해 방식 호출)
저장 과정 에서 데 이 터 를 조회 하지 않 더 라 도 HashMap (키 값 이 맞 는 형식) 으로 돌아 가 야 합 니 다. void 를 쓰 면 오류 가 발생 합 니 다.
이 예 는 여러 개의 데 이 터 를 되 돌려 주기 때문에 List 를 사용 합 니 다.
@SuppressWarnings("rawtypes") @Select("call test0(#{endTime},#{startTime},#{mill})") @Options(statementType= StatementType.CALLABLE ) public List callTest(@Param("endTime")String endTime, @Param("startTime")String startTime, @Param("mill")int mill);
5. 업무 추가, 이상 처리. (계속)
-----------------------------------------------------------------------------------
/ / OUT 가 져 온 CREATE PROCEDURE SP_SEARCH2(IN p_name CHAR(20),OUT p_int INT) BEGIN IF p_name is null or p_name='' THEN SELECT * FROM t_user; ELSE SELECT * FROM t_user WHERE USER_NAME LIKE p_name; END IF; SELECT FOUND_ROWS() INTO p_int; END
//
CALL SP_SEARCH2(
' %'
,@p_num);
SELECT
@p_num;
글:
http://www.jb51.net/article/70677.htm
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.