オラクルカーソルとは何ですか
Oracle では、カーソルは、キーワード CURSOR を使用して、Oracle によってクエリされるデータ セットのセットを定義するメカニズムです。クエリされたデータ セットはメモリに格納でき、カーソルはデータの 1 つを指します。データ セットをループするという目的を達成するために、ループ カーソルを介して記録します。
このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。
Oracle では、カーソルは SELECT ステートメントに名前を割り当て、その SQL ステートメント内の情報を処理できるメカニズムです。
Oracle カーソルは、キーワード CURSOR を通じて Oracle によって照会されるデータ セットのセットを定義します。配列と同様に、照会されたデータ セットはメモリに格納され、カーソルはレコードの 1 つを指し、カーソルがループ データ セットをループする目的を達成します。
カーソルの機能は何ですか?
①結果セット内の特定の行の位置を指定します。
②現在の結果セットの位置に基づいて、1 行または連続する複数の行を取得します。
③ 結果セットの現在位置にある行のデータを変更します。
④ 他のユーザーによるデータ変更に対してさまざまな機密レベルを定義します。
⑤データベースにはプログラムからアクセスできます。
Oracle カーソルの種類?
1. 静的カーソル: 結果セットが確認されている (静的に定義されている) カーソル。暗黙的カーソルと明示的カーソルに分けられる
暗黙的カーソル: すべての DML ステートメントは暗黙的カーソルであり、SQL ステートメントの情報は暗黙的カーソル属性を通じて取得できます。
カーソルの表示: ユーザーは、宣言されたカーソル、つまり指定された結果セットを表示します。クエリが複数行の結果を返す場合は、明示的なカーソルが必要です。
2. REF カーソル: 結果セットを動的に関連付ける一時オブジェクト。
Oracle カーソルのステータスとカーソル属性の使用方法は何ですか?
①カーソルの状態を属性で表現します。
%Found: Fetch ステートメント (レコードの取得) の実行ステータスが True または False です。
%NotFound: 最後のレコードが True として抽出されるか False として抽出されるか。
%ISOpen: カーソルが開いているかどうか。True または False。
%RowCount: カーソルによって現在抽出されている行の数。
②カーソルのプロパティを利用します。
例:
/* conn scott/tiger */ Begin Update emp Set SAL = SAL + 0.1 Where JOB = 'CLERK'; If SQL%Found Then DBMS_OUTPUT.PUT_LINE('已经更新!'); Else DBMS_OUTPUT.PUT_LINE('更新失败!'); End If; End;
ディスプレイ カーソルを使用するにはどうすればよいですか?ループカーソルを反復するにはどうすればよいですか?
1. 表示カーソルを使用します
カーソルを宣言します: 記憶領域を分割します。この時点では Select ステートメントは実行されないことに注意してください。 。
CURSOR 游标名( 参数 列表) [返回值类型] IS Select 语句;
カーソルを開く: Select ステートメントを実行し、結果セットを取得してカーソルに格納します。このとき、カーソルは先頭を指します。最初のレコードではなく、結果セットです。
Open 游标名( 参数 列表);
レコードの取得: カーソルを移動してレコードを取得します
Fetch 游标名InTo 临时记录或属性类型变量;
カーソル: カーソルはバッファー プールに配置され、リソースは完全には解放されません。再開可能です。
Close 游标名;
2. ループ カーソルの移動
ループ カーソルの場合
ループ カーソルは次のとおりです。暗黙的にオープン カーソルは自動的にスクロールしてレコードを取得し、レコードを保存するための一時レコード タイプ変数を自動的に作成します。処理後、カーソルは自動的に閉じられます。
For 变量名 In 游标名 Loop 数据处理语句; End Loop;
ループ カーソル
。。。 Loop Fatch 游标名InTo 临时记录或属性类型变量; Exit When 游标名%NotFound; End Loop; 。。。
例 1:
/* conn scott/tiger */ Declare Cursor myCur is select empno,ename,sal from emp; vna varchar2(10); vno number(4); vsal number(7,2); Begin open myCur; fetch myCur into vno,vna,vsal; dbms_output.put_line(vno||' '||vna||' '||vsal); close myCur; End; /
例 2: ループを使用してカーソルを移動します。
/* conn scott/tiger */ Declare Cursor myCur is select ename,job,sal,empno from emp; varE myCur%rowType; Begin if myCur%isopen = false then open myCur; dbms_output.put_line('Opening...'); end if; loop fetch myCur into varE; exit when myCur%notfound; dbms_output.put_line(myCur%rowCount||' '||vare.empno||' '||vare.ename||' '||vare.sal); end loop; if myCur%isopen then Close myCur; dbms_output.put_line('Closing...'); end if; End; /
例 3: For ループを使用してカーソルを移動します。
/* conn scott/tiger */ Declare Cursor myCur is select * from emp; Begin for varA in myCur loop dbms_output.put_line(myCur%rowCount||' '||varA.empno||' '||varA.ename||' '||varA.sal); end loop; End; /
表示されたカーソル内のレコードを更新および削除するにはどうすればよいですか?
①UPDATE または DELETE ステートメントの WHERE CURRENT OF 部分文字列は、UPDATE または DELETE 操作を実行するテーブルから取得された最新のデータを具体的に処理します。
このメソッドを使用するには、カーソルを宣言するときに FOR UPDATE 部分文字列を使用する必要があります。ダイアログで FOR UPDATE 部分文字列を使用してカーソルを開くと、
戻りセット内のすべてのデータ行が行レベル (ROW-LEVEL) 排他ロックにある場合、他のオブジェクトはこれらのデータ行のクエリのみを行うことができ、
は UPDATE、DELETE、または SELECT...FOR UPDATE 操作を実行できません。
複数テーブルのクエリでは、OF 句を使用して特定のテーブルをロックします。OF 句が無視されると、すべてのテーブルで選択されたデータ行がロックされます。
これらのデータ行が他のセッションによってロックされている場合、通常の状況では、ORACLE はデータ行のロックが解除されるまで待機します。
② 更新または削除を使用します:
⑴ 表示カーソルを更新または削除することを宣言します:
Cursor 游标名IS SELECT 语句 For Update [ Of 更新列列名]; Cursor 游标名IS SELECT 语句 For Delete [ Of 更新列列名];
⑵ 表示カーソルを使用して現在のレコードを更新または削除します:
Update 表名 SET 更新语句 Where Current Of 游标名; Delete From 表名 Where Current Of 游标名;
例 1: 表示カーソル レコードを更新します
/*conn scott/tiger*/ Declare Cursor myCur is select job from emp for update; vjob empa.job%type; rsal empa.sal%type; Begin open myCur; loop fetch myCur into vjob; exit when myCur%notFound; case (vjob) when 'ANALYST' then rsal := 0.1; when 'CLERK' then rsal := 0.2; when 'MANAGER' then rsal := 0.3; else rsal := 0.5; end case; update emp set sal = sal + rsal where current of myCur; end loop; End; /
例 2: 表示カーソル レコードを削除します
/*conn scott/tiger Crate table empa Select * from scott.emp; */ Declare Cursor MyCursor Select JOB From empa For Update; vSal emp.Sal%TYPE; Begin Loop Fetch MyCursor InTo vSal; Exit When MyCursor%NotFound; If vSal < 800 Then Delete From empa Where Cursor Of MyCursor; End If; End Loop; End;/
パラメータ付き表示カーソルとは何ですか?
1. プロシージャや関数と同様に、パラメータをカーソルに渡してクエリで使用できます。
パラメータはデータ型のみを定義し、サイズは定義しません (Oracle のすべての仮パラメータはデータ型のみを定義し、サイズは定義しません)。
与过程不同的是,游标只能接受传递的值,而不能返回值。
可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。
游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。
2、使用带参数的显示游标
声明带参数的显示游标:
CURSOR 游标名 [(parameter[,parameter],...)] IS Select语句;
参数形式:
1,参数名 数据类型
2,参数名 数据类型 DEFAULT 默认值
例子:
/*conn scott/tiger Crate table empa Select * from scott.emp; */ Declare Cursor MyCursor(pSal Number Default 800) Select JOB From empa Where SAL > pSal ; varA MyCursor%ROWTYPE; Begin Loop Fetch MyCursor InTo varA; Exit When MyCursor%NotFound; DBMS_OUTPUT.PUT_LINE(MyCursor%RowCount||' '||varA.empno||' '||varA.ename||' '||varA.sal); End Loop; End;/
推荐教程:《Oracle教程》
以上がオラクルカーソルとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

OracleデータベースをHadoopと統合する主な理由は、Oracleの強力なデータ管理およびトランザクション処理機能、およびHadoopの大規模なデータストレージおよび分析機能を活用することです。統合方法には、次のものが含まれます。1。OracleBigDataconnectorからHadoopへのデータのエクスポート。 2。データ送信にはapachesqoopを使用します。 3. Oracleの外部テーブル関数を介してHadoopデータを直接読み取ります。 4. OracleGoldEngateを使用して、データの同期を実現します。

Oracleデータベースでは、クエリ時に特定のフィールドの値を返さない場合は、次の3つの方法を使用できます。選択ステートメントに必要なフィールドのみをリストし、不要なフィールドを選択しないでください。ビューを作成してクエリを簡素化しますが、ビューの複雑さとメンテナンスコストに注意してください。サブクリーリーまたは結合を使用して不要な列を除くことは、列の動的除外に適していますが、クエリのパフォーマンスに影響を与える可能性があります。各方法には、適用可能なシナリオと潜在的な欠点があり、特定のニーズとパフォーマンスに関する考慮事項に基づいて、最も適切な方法を選択する必要があります。

内容1。ICNとは何ですか? 2。ICNT最新の更新3。ICNと他のDEPINプロジェクトと経済モデルの比較と経済モデル4。5月末のDePINトラックの次の段階の結論、ICN(不可能なもの)@ICN_Protocolは、NGPCAPITALへの戦略的投資を4億7000万ドルの評価で受け取ったと発表しました。多くの人々の最初の反応は、「XiaomiはWeb3に投資しましたか?」でした。これはレイ・ジュンの直接的な動きではありませんでしたが、Xiaomi、Helium、およびWorkFusionに賭けた人は

Oracleデータベースの論理構造は、テーブル、ビュー、パターン、テーブルスペースなど、ユーザーや開発者がデータを編成する方法に焦点を当てています。物理構造には、データファイル、redoログ、制御ファイルなどを含むディスク上のデータの実際のストレージが含まれます。1。論理構造には、テーブル、ビュー、インデックス、パターン、テーブルスペースが含まれ、ユーザーがデータにアクセスする方法を決定します。 2。物理構造は、データファイル、redoログ、制御ファイル、アーカイブログで構成されています。これらは、データの持続性と回復を担当します。 3.テーブルスペースは、論理と物理学をつなぐ重要なブリッジであり、その容量は基礎となるデータファイルによって制限されます。 4.異なる役割にはさまざまなレベルの注意があり、開発者は論理の最適化に焦点を当てており、DBAは身体管理により多くの注意を払っています。 5。2つの違いを理解することで、問題を効率的にトラブルシューティングし、パフォーマンスを最適化し、合理的な管理を行うことができます

一時的な標準装置は、dataduringsqloperations likesorting、hashing、andglobaltempolarytables.1)surtingoperationssuchasorderby、groupby、ordistcistinctskskspaceifmemoryisufficient.2)ハスヨン症の角膜下触能筋関節系

OracleEresurestransactionDurabilityandConsingsinging of oforcommitsundundoforrollbacks.duringAcommit、OraclegeneratesAcomitredologbuffer、MarksChangesAspranentinredologs、およびAndUpdatestesctestescntecntecntorescntoreflectthecurrentdatabasetate.forrollbacks、oracle

ブロックチェーンテクノロジーは、Ethereum、Binance Smart Chain、Polygonなどの多くの独立したネットワークを生み出しました。各ネットワークには独自のデザインとプロトコルがあります。しかし、この独立は、異なるチェーン間で自由に流れる困難な資産と情報の課題も提示しています。たとえば、EthereumのERC-20トークンは、ポリゴンネットワークで直接使用することはできません。この分離の問題を解決するために、クロスチェーンブリッジが出現し、さまざまなブロックチェーンネットワークを接続するための重要なインフラストラクチャになりました。

OracLedatadictionaryは、メタデータを保存するOracleデータベースのコアリード専用構造であり、データベースオブジェクト、アクセス許可、ユーザー、ステータスなどの情報を提供します。 1.主なビューには、user_xxx(現在のユーザーオブジェクト)、all_xxx(現在のユーザーアクセスオブジェクト)、dba_xxx(完全なライブラリオブジェクトにはDBA許可が必要です)が含まれます。 2。テーブル列情報、一次キーの制約、テーブルアノテーションなどのメタデータは、SQLクエリを通じて取得できます。 3.使用シナリオ開発構造のレビュー、デバッグ許可分析、クエリパフォーマンスの最適化、自動化されたスクリプト生成をカバーします。命名規則と一般的なビューのマスター化は、データベースの構成と構造情報を効率的に取得できます。
