カーソルの機能と属性
カーソルの機能は、対応する操作を実行するためにクエリ データベースから返されたレコードを走査することです。カーソルは次の属性を持ちます。のみ、つまり更新できません
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 完了 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 SETned = TRUE;
-- カーソルを開く
OPEN cur;
-- ループを開始
read_loop: LOOP
-- カーソル内のデータを抽出します。ここには 1 つだけあります。複数ある場合も同様です。
FETCH cur INTO a;
-- ステートメントの最後
IF 完了THEN
LEAVE read_loop;
END IF;做 - ここで実行したいイベント
Set Tbname = Concat ("NT_M_GPSDATA", a);
- 1=2 を選択します。テーブル フィールドのみをコピーできます。フィールドの主キー、自動インクリメント、空でないその他の属性はコピーできません。oldtable と同様にテーブル newtable を作成すると、フィールド属性をコピーできます
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
その後、このテーブル分割戦略を Oracle プロジェクトに適用し、コードを添付しました
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 中国語 Web サイトの他の関連記事を参照してください。