第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

Similar documents
第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

はじめに コース概要と目的 Oracle を使用した開発 管理を行う上でのファースト ステップとして リレーショナル データベース管理ソフトウェアである Oracle の役割 基本機能 基本アーキテクチャを幅広く理解することを目的としています 受講対象者 これから Oracle を使用する方 データ

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

プレポスト【問題】

5 Q. 結果セットを 1 行飛ばしに FETCH することはできますか A. できません Oracle は必ず結果セットを上から 1 行ずつ FETCH します 6 Q. カーソルを一度にいくつまでオープンできますか A. 初期化パラメータ OPEN_CURSORS で指定したの値までカーソルをオ

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

橡実践Oracle Objects for OLE

1000 Copyright(C)2009 All Rights Reserved - 2 -

sinfI2005_VBA.doc

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Microsoft Word - Android_SQLite講座_画面800×1280

PGECons技術ドキュメントテンプレート Ver.3

Microsoft PowerPoint - 3-Forms-Others.ppt

Microsoft PowerPoint - Lite10g_SyncArchitecture.ppt

Microsoft PowerPoint - 講義補助資料2017.pptx

ストアドプロシージャ移行調査編

標準化 補足資料

Microsoft PowerPoint - KeySQL50_10g_vlo2.ppt

PowerPoint プレゼンテーション

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

DumpCollection IT Exam Training online / Bootcamp PDF and Testing Engine, study and practice

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤


Microsoft PowerPoint - CproNt02.ppt [互換モード]

PowerPoint プレゼンテーション

Oracle Database Connect 2017 JPOUG

Chapter Two

问题集 ITEXAMPASS 1 年で無料進級することに提供する

Oracle Direct Seminar <Insert Picture Here> 試験対策ポイント解説 11g SQL 基礎 Ⅰ 日本オラクル株式会社

PL/SQL プログラミング Ⅱ ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルア

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

PowerPoint プレゼンテーション

Microsoft PowerPoint - 03BNFScanner.ppt [互換モード]

Microsoft PowerPoint - 2-Forms-UI

Copyright(C)2010 i-corpration All Rights Reserved.

セットアップカード

プレポスト【解説】

Microsoft Word - sample_adv-programming.docx

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

ユーザ デバイス プロファイルの ファイル形式

PA4

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Microsoft Word - VBA基礎(3).docx

Java講座

Chapter Two

DB12.1 Beta HandsOn Seminar

PowerPoint プレゼンテーション

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

5 Q. 選択リストにアスタリスク (*) を使用して 位置に基づくソートを行うとどうなりますか A. その表を構成している列の順序に対応して 暗黙的に番号が割り振られます 6 Q. 文字データが日本語の場合 ソートは五十音順に行われるのですか A. 五十音順ではなく 文字コード順になります 文字コ

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

テキスト中の表記について 画面中に表示される文字の表記ウィンドウ ボタン メニューなど 画面に表示される文字は [] で囲んで表記しています 画面上に表示される選択肢や 入力する文字については で囲んで表記しています ディレクトリの表記本テキストではファイルのパスを表す際 すべてデフォルトのインスト

領域サイズの見積方法

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

NEC COBOL SQL アクセス Server Runtime V1.0 COBOL SQL アクセス Server Runtime V1.0 (1 年間保守付 ) COBOL SQL アクセス Server Runtime V1.0 (1 年間時間延長保守付 ) セットアップカード SL438

今さら聞けない!? Oracle入門 ~後編~

プログラミング実習I

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

PowerPoint Presentation

テキスト中の表記について 画面中に表示される文字の表記ウィンドウ ボタン メニューなど 画面に表示される文字は [] で囲んで表記しています 画面上に表示される選択肢や 入力する文字については で囲んで表記しています ディレクトリの表記本テキストではファイルのパスを表す際 すべてデフォルトのインスト

Prog2_12th

Microsoft PowerPoint - db03-5.ppt

テキスト 中 の 表 記 について 画 面 中 に 表 示 される 文 字 の 表 記 ウィンドウ ボタン メニューなど 画 面 に 表 示 される 文 字 は[]で 囲 んで 表 記 しています 画 面 上 に 表 示 される 選 択 肢 や 入 力 する 文 字 については で 囲 んで 表 記

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

Excel データ出力ガイドブック 第 1.0 版平成 30 年 9 月 1 日制定 株式会社中電シーティーアイ

( ハイブリット型データベース環境 ) プロトタイプ検証結果 第二版 有限会社ツインズ Twinz Co., Ltd 年 7 月 3 日 /15

<4D F736F F F696E74202D2091E6358FCD B8F88979D B F2E707074>

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

Taro-Basicの基礎・条件分岐(公

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

Warehouse Builderにおける予測分析の使用

プレポスト【問題】

BC4J...4 BC4J Association JSP BC4J JSP OC4J

VelilogHDL 回路を「言語」で記述する

プログラミング基礎

PowerPoint プレゼンテーション

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

GEC-Java

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

Report#2.docx

Oracle Lite Tutorial

変更履歴 版数変更日変更内容 /9/1 初版設定


PowerPoint プレゼンテーション

Microsoft PowerPoint - ruby_instruction.ppt

FormPat インポート設定ガイド

_02_3.ppt

スライド タイトルなし

Dolteng Scaffoldに対する機能追加とマスタ-ディテールScaffoldの紹介

PowerPoint プレゼンテーション


Transcription:

はじめに コース概要と目的 Oracle 独自の手続き型言語である PL/SQL について説明します PL/SQL の基本構文 ストアド サブプログラム トリガーの作成方法 またストアド サブプログラムの管理について習得することを目的としています 受講対象者 これから PL/SQL を使用してアプリケーション開発をされる方 前提条件 SQL トレーニング コースを受講された方 もしくは 同等の知識をお持ちの方 DML 文 トランザクションについては既に習得済みであること テキスト内の記述について 構文 [ ] 省略可能 { A B } A または B のどちらかを選択 n _ 数値の指定 デフォルト値 マーク 指定バージョンからの新機能 ( 左記の場合 Oracle 12cR1 からの新機能 ) 知っておいたほうが良いテクニック もしくは注意事項 参照ページ データ ディクショナリ ビュー

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

1. 宣言部 宣言部では実行部で使用するオブジェクトを定義します 必要でなければ省略することも可能です 宣言部は キーワードで始まり 実行部の キーワードにより暗黙的に終了します 主に以下のオブジェクトを定義します 変数 定数 カーソル 例外 EXCEPTION 宣言部 ( 変数 定数 カーソル 例外等の宣言 ) 実行部 ( SQL によるデータ操作 手続き処理の記述 ) 例外処理部 ( 例外発生時の対処方法の記述 ) 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 2-1

宣言部 ( 点線内 ) dept_up NUMBER; 変数の宣言 rate CONSTANT NUMBER := 1.03; 定数の宣言 CURSOR emp_cr IS カーソルの宣言 SELECT empno,sal,deptno FROM emp; emp_rec emp_cr%rowtype; sal_no_data EXCEPTION; 例外の宣言 OPEN emp_cr; LOOP FETCH emp_cr INTO emp_rec; EXIT WHEN emp_cr%notfound; IF emp_rec.sal IS NULL THEN RAISE sal_no_data; END IF; CASE emp_rec.deptno WHEN 10 THEN dept_up := 1.05; WHEN 20 THEN dept_up := 1.06; WHEN 30 THEN dept_up := 1.07; WHEN 40 THEN dept_up := 1.08; ELSE dept_up := rate; END CASE; UPDATE emp SET sal = TRUNC(sal * dept_up) WHERE deptno = emp_rec.deptno; END LOOP; CLOSE emp_cr; EXCEPTION WHEN sal_no_data THEN raise_application_error(-20001,' 給与のデータが存在しません '); Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 2-2

(1) 変数と定数 手続き型処理では 処理で使用する値を変数や定数に格納 ( 代入 ) します 変数や定数などの名前 ( 識別 子 ) は宣言部で指定します 1) 変数 変数とは 処理で使用する値を格納しておく場所です 処理の途中でデータベースのデータや計算結果を一時的に変数に格納 ( 代入 ) できます 一度代入した変数に対して 異なる値を上書きして再利用できます 変数名データ型 [ NOT NULL ] [ { := DEFAULT } 値 ] ; 代入演算子(:=) または DEFAULT キーワードを指定して初期値を設定できます デフォルトでは変数は NULL 状態です NOT NULL キーワードを指定して変数に NULL が代入されないように定義することもできます その際には変数に初期値を指定する必要があります 2) 定数 定数とは 変数と同様 処理で使用する値を格納しておく場所です ただし 変数と異なり定数は 1 つの決まった値を保持するため 定数に代入した値は上書きできません そのため プログラム内で固定値を扱う場合に使用します 定数名 CONSTANT データ型 { := DEFAULT } 値 ; 定数宣言時には必ず初期値を指定します 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 2-3

例 ) 変数 定数の宣言を行う /* 変数 */ no NUMBER(5); name VARCHAR2(10) := 'SMITH'; /* 定数 */ prod CONSTANT VARCHAR2(3) := 'ABC'; 省略 数値型の値を代入できる変数 no を宣言 初期値を指定した変数 name を宣言 定数の宣言では必ず初期値を指定し それ以降は値の上書きはできない 変数 NUMBER(5) 変数 no 11111 11111 1 変数 no に 11111 という数値データを代入 NUMBER(5) 変数 no 22222 22222 2 変数 no に 22222 という数値データを再度代入 11111 は上書きされる 定数 VARCHAR2(3) 定数 prod ABC DEF 定数 prod に DEF という文字データを代入 定数に対しては上書きできないためエラーとなる Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 2-4

(2) %TYPE %ROWTYPE 属性 %TYPE %ROWTYPE 属性を使用すると データベースの表の列や行 既に宣言された変数のデータ型を参照する変数を宣言できます 列や行を参照するため 表の定義が変更されたような場合もコードを変更する必要がありません そのため 表のデータを取出して処理する場合に便利です 1) %TYPE 属性 特定の表の列または既存の変数のデータ型を参照します %TYPE 属性を使用した変数に初期値を指定することが可能です 2) %ROWTYPE 属性 %ROWTYPE 属性は特定の表 ( またはビュー ) の行構造定義を参照します %ROWTYPE 属性は以下の特徴を持 ちます 変数は表の行構造と同じ数のフィールドを持ちます 各フィールドの名前とデータ型は参照表の列の名前とデータ型が対応付けられます %ROWTYPE 属性を使用した変数は初期値を指定できません 各フィールドの参照は 変数名. フィールド名 で指定します 例 )%TYPE %ROWTYPE 属性を使用して変数を宣言する /* %TYPE 属性 */ num_1 dept.dname%type; num_2 num_1%type; e_job emp.job%type := 'SALESMAN'; /* %ROWTYPE 属性 */ d_rec dept%rowtype; 省略 UPDATE dept SET loc = d_rec.loc WHERE deptno = 10; 省略 1 2 3 4 5 1 変数 num_1 は DEPT 表の DNAME 列と同じデータ型で定義されます 2 変数 num_2 は 変数 num_1 と同じデータ型で定義されます 3 変数 e_job は EMP 表の JOB 列と同じデータ型で定義され 初期値 SALESMAN が代入されます 4 変数 d_rec は DEPT 表の各列と同じデータ型 名前が各フィールドで定義されます 5 変数 d_rec の LOC フィールドを参照するには d_rec.loc と指定します 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 2-5

%TYPE 属性 DEPT.DNAME%TYPE DEPT.DNAME%TYPE 変数 num_1 VARCHAR2(14) 変数 num_1 VARCHAR2(20) DEPT 表 DEPT 表 参照しているため 変数の定義変更の必要がない DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) DEPTNO NUMBER(2) DNAME VARCHAR2(20) LOC VARCHAR2(13) DNAME 列の定義を変更 %ROWTYPE 属性 DEPT%ROWTYPE 変数 d_rec D_REC.DEPTNO NUMBER(2) D_REC.DNAME VARCHAR2(14) D_REC.LOC VARCHAR2(13) DEPT 表 DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) 各フィールドには列名と同じ名前とデータ型が対応付けられる Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 2-6

(3) 変数 定数宣言時の考慮事項 1) 識別子の命名規則 変数や定数などの PL/SQL オブジェクトに定義する名前のことを識別子と呼びます 識別子は以下の命名 規則に従って定義します 識別子の長さは最大 30 バイトです 先頭は英字です 2 文字目以降であれば 数字 ドル記号 ($) シャープ記号(#) アンダースコア (_) を使用できます ハイフン(-) スラッシュ(/) アンパサンド(&) 空白などの文字は使用できません 予約語は使用できません 予約語 キーワード一覧 ( 付 -5 ) 2) 識別子の有効範囲 識別子は使用できる有効範囲が決められています 識別子を指定する際は以下の点に注意します 識別子の有効範囲は 宣言されたブロックおよびサブブロックです 同一ブロック内で重複した識別子を宣言できません 異なるブロックであれば同じ識別子を宣言できますが 判別しやすくするため 異なる識別子で宣言することを推奨します 3) 注意事項 PL/SQL では前方参照ができません 変数または定数を参照する場合は 事前に宣言されている必要があります 前方参照とは まだ宣言していないオブジェクト名やプログラム名を参照することです 同一データ型の変数を 一度に複数宣言することはできません 変数は必ず 1 つずつ宣言してください 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 2-7

識別子の有効範囲 < 識別子を参照できる例 > < ブロック 1> a NUMBER(2); < ブロック 2> a := 10; サブブロック 変数 a は ブロック 1 で宣言されているため ブロック 1 とそのサブブロックであるブロック 2 で参照できる < 識別子を参照できない例 > < ブロック 1> < ブロック 2> b VARCHAR2(3); サブブロック ; b := 'ABC'; 変数 b は ブロック 2 で宣言されているため ブロック 1 では参照できない Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 2-8