ホームページ  >  記事  >  データベース  >  カーソルの機能とプロパティの紹介

カーソルの機能とプロパティの紹介

rayZ
rayZオリジナル
2017-07-26 09:24:273678ブラウズ

カーソルの機能と属性

カーソルの機能は、対応する操作を実行するためにクエリ データベースから返されたレコードを走査することです。カーソルは次の属性を持ちます。のみ、つまり更新できません

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。