커서의 기능과 속성
커서의 기능은 해당 작업을 수행하기 위해 쿼리 데이터베이스에서 반환된 레코드를 탐색하는 것입니다. 커서에는 다음과 같은 속성이 있습니다. 즉, 업데이트할 수 없습니다.
b. 커서는 한 방향으로만 이동할 수 있고, 레코드 간에 마음대로 전진하거나 후퇴할 수 없으며, 특정 레코드를 건너뛸 수 없습니다. . 테이블의 데이터를 업데이트할 때 커서를 열지 마십시오.
상대적으로 많은 양의 nt_m_gpsdata(3000W+) 데이터를 날짜에 따라 nt_m_gpsdata20170501, nt_m_gpsdata20170502, nt_m_gpsdata20170503 등으로 분할하는 기능을 구현합니다.
CREATE PROCEDURE `new_procedure` ()
BEGIN
-- 수신을 정의해야 합니다. 커서 데이터 변수
DECLARE a CHAR(16);
--새 테이블의 이름 정의
DECLARE tbname CHAR(30);
--SQL 문을 저장할 변수 정의
DECLARE sqlstr1 varchar( 300);
DECLARE sqlstr2 varchar(300);
-- 데이터 탐색의 끝 표시
DECLARE done INT DEFAULT FALSE;
-- 커서 정의
DECLARE cur CURSOR FOR select DISTINCT DATE_FORMAT(ctime,'%Y %m%d') as ctime from nt_m_gpsdata;
-- 끝 플래그를 커서에 바인딩
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 커서 열기
OPEN cur;
-- 루프 시작
read_loop: LOOP
--커서에서 데이터를 추출합니다. 여기에는 하나만 있습니다. 여러 개가 있는 경우에도 동일하게 적용됩니다.
FETCH cur INTO a;
-- 명령문의 끝
IF done THEN
LEAVE read_loop;
END IF;做 - 여기서 하고 싶은 이벤트
Set Tbname = Concat ("NT_M_GPSDATA", a)
- 1=2 테이블 필드만 복사할 수 있습니다. . 필드 기본 키, 자동 증가, 비어 있지 않음 및 기타 속성은 복사할 수 없습니다. oldtable과 같은 테이블 생성은 필드 속성을 복사할 수 있습니다
set sqlstr1 = CONCAT("create table ",tbname," like nt_m_gpsdata"); set sqlstr2 = CONCAT("insert into ",tbname," select * from nt_m_gpsdata where deleted=0 and DATE_FORMAT(ctime,'%Y%m%d')='",a,"'"); set @firstsql = sqlstr1; PREPARE stmt1 FROM @firstsql; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @secondsql = sqlstr2; PREPARE stmt2 FROM @secondsql; EXECUTE stmt2; DEALLOCATE PREPARE stmt2;
END LOOP;
-- 커서를 닫습니다
CLOSE cur;
END
나중에 이 테이블 분할 전략을 오라클 프로젝트에 적용하고 코드를 첨부했습니다
DECLARE cursor my_cursors is select DISTINCT to_char(ctime,'yyyymmdd') as ctime from NTGIS_GPS_EVENTDATA; mcursor varchar2(40); begin for mcursor in my_cursors loop DECLARE tbname VARCHAR2(50) := 'NTGIS_GPS_EVENTDATA'||mcursor.ctime; sqlstr VARCHAR2(300) := 'CREATE TABLE '||tbname||' as SELECT * from NTGIS_GPS_EVENTDATA where to_char(ctime,''yyyymmdd'')='''||mcursor.ctime||''''; BEGIN --dbms_output.put_line(tbname); execute immediate sqlstr; END; end loop; end;
위 내용은 커서의 기능 및 속성 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!