検索
ホームページデータベースmysql チュートリアルOracle数据库之PL/SQL程序基础设计

一、PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构, http://www.linuxidc.com/Linux/2015-01/112351.htm 再来回顾一下: DECL

一、PL/SQL块结构

前边我们已经介绍了PL/SQL块的结构,  再来回顾一下:

DECLARE /* * 声明部分——定义常量、变量、复杂数据类型、游标、用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */

要实现PL/SQL程序设计,先介绍如下的基本内容:

二、标识符

PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同:

注意: 一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果。

三、变量

1. 变量定义

声明:

variable_name Type;

示例:

my_var NUMBER(4);

赋值:

variable := expression ;

示例:

my_var := 32 * 8 + 79; -- 声明并赋值 cnt NUMBER(2) := 3;

2. 变量作用域

在PL/SQL编程中,如果在变量的定义上没有做到统一的话,可能会隐藏一些危险的错误,这样的原因主要是变量的作用域所致。变量的作用域是指变量的有效作用范围,与其它高级语言类似,PL/SQL的变量作用范围特点是:

四、运算符

1. 关系运算符

运算符说明

= 等于

, != , ~= , ^= 不等于

> 大于

>= 大于等于

2. 逻辑运算符

运算符说明

AND 逻辑与

OR 逻辑或

NOT 逻辑非,取反

3. 算术运算符

运算符说明

+ 加

- 减

* 乘

/ 除

4. 其它运算符

运算符说明

IS NULL 是空值

BETWEEN AND 介于两者之间

IN 在一列值中间

:= 赋值运算符

=> 关系号

.. 范围运算符

|| 字符连接符

五、数据类型

前面已经介绍过Oracle中的基本数据类型,除了这些基本数据类型外,Oracle中还有其它的数据类型,我们一一来分析。

1. BOOLEAN

该数据用于定义布尔变量,其变量的值为TRUE、FALSE或NULL。注意此类型只能在PL/SQL中使用,表列是没有此类型的。

2. %TYPE

通常用于指定表的某个列的数据类型,可以理解为“的类型”(小技巧:%读“的”)。

示例:

emp_id employee.id%TYPE;

使用%TYPE特性的优点在于:

  • 所引用的数据库列的数据类型可以不必知道。
  • 所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
  • 3. %ROWTYPE

    %ROWTYPE操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。

    示例:

    rec employee%ROWTYPE;

    使用%ROWTYPE特性的优点在于:

  • 所引用的数据库中列的个数和数据类型可以不必知道。
  • 所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
  • 4. 复合数据类型

    4.1. 记录(Record)

    记录类型类似于C语言中的结构数据类型,它把分离的、逻辑相关的、基本数据类型的变量组成一个整体存储起来,它必须包括至少一个标量型或RECORD数据类型的成员,称作PL/SQL RECORD的域(FIELD),其作用是存放互不相同但逻辑相关的信息。

    语法:

    TYPE record_name IS RECORD( varable1 data_type1 [NOT NULL] [:= default_value ], varable2 data_type2 [NOT NULL] [:= default_value ], ......, varablen data_typen [NOT NULL] [:= default_value ] );

    在使用记录数据类型变量时,需要先在声明部分先定义记录的组成、记录的变量,然后在执行部分引用该记录变量本身或其中的成员。

    示例1:

    DECLARE -- 定义记录类型 TYPE TEST_REC IS RECORD( rec_name VARCHAR2(30) NOT NULL := '匿名', info VARCHAR2(100) ); -- 声明记录变量 rec_emp TEST_REC; BEGIN rec_emp.rec_name :='刘强东'; rec_emp.info :='谈京东的业务发展'; DBMS_OUTPUT.PUT_LINE(rec_emp.rec_name||' ' ||rec_emp.info); END;

    说明:我们可以使用DBMS_OUTPUT.PUT_LINE(outdata)或DBMS_OUTPUT.PUT(outdata)将处理结果输出到屏幕上。

    运行结果:

    刘强东 谈京东的业务发展

    示例2(示例中所用到的表及数据见文末):

    DECLARE --定义与employee表中的几个列相同的记录数据类型 TYPE RECORD_TYPE_EMPLOYEES IS RECORD( e_id employee.id%TYPE, e_name employee.name%TYPE, e_birth employee.birthday%TYPE, e_address employee.address%TYPE, e_did employee.did%TYPE ); --声明一个该记录数据类型的记录变量 emp_record RECORD_TYPE_EMPLOYEES; BEGIN SELECT id, name, birthday, address, did INTO emp_record FROM employee WHERE id = &emp_id; DBMS_OUTPUT.PUT_LINE('雇员名称:'||emp_record.e_name ||' 出生日期:'||emp_record.e_birth ||' 地址:'||emp_record.e_address); END;

    说明:可以用SELECT语句对记录变量进行赋值,只要保证记录字段与查询结果列表中的字段相配即可。&emp_id表示接收用户的输入。

    紧跟着&符号后面的变量被称为替换变量。替换变量对数据库引擎是“不可见的”。其实PL/SQL会用用户输入的文本内容来替换变量引用。

    如果你想在代码的不同地方引用相同的替换变量,那就需要在第一个替换变量前面放两个&符号,这样才会为你保留这个值以便后续使用。

    输入2,输出结果:

    雇员名称:刘兰 出生日期:03-9月 -85 地址:四川成都

    4.2. 表(TABLE)

    4.2.1. 索引表

    索引表也称为PL/SQL表,它是Oracle早期版本用于处理PL/SQL数组的数据类型。索引表的元素个数没有限制,并且下标可以为负值。

    它与记录类型相似,但它是对记录类型的扩展。它可以处理多行记录,使得可以在PL/SQL中模仿数据库中的表。

    注意,索引表只能作为PL/SQL复合数据类型使用,而不能作为表列的数据类型使用。

    语法结构:

    TYPE table_name IS TABLE OF element_type [NOT NULL] INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARCHAR2];

    关键字INDEX BY表示创建一个主键索引,,以便引用记录表变量中的特定行。

    表是集合类型,集合类型常用方法有:

    方法说明

    EXISTS(n) 如果集合的第n个成员存在,则返回true

    COUNT 返回已经分配了存储空间即赋值了的成员数量

    FIRST 返回成员的最低下标值

    LAST 返回成员的最高下标值

    PRIOR(n) 返回下标为n的成员的前一个成员的下标。如果没有则返回NULL

    NEXT(N) 返回下标为n的成员的后一个成员的下标。如果没有则返回NULL

    TRIM TRIM:删除末尾一个成员。
    TRIM(n) :删除末尾n个成员

    DELETE DELETE:删除所有成员。
    DELETE(n) :删除第n个成员。DELETE(m, n) :删除从n到m的成员。

    EXTEND EXTEND:添加一个null成员。
    EXTEND(n):添加n个null成员。
    EXTEND(n,i):添加n个成员,其值与第i个成员相同。

    LIMIT 返回在varray类型变量中出现的最高下标值

    集合方法调用语法为:

    collection_name.method_name[(parameters)]
    声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。Apr 19, 2025 am 12:24 AM

    Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

    MySQL対その他のプログラミング言語:比較MySQL対その他のプログラミング言語:比較Apr 19, 2025 am 12:22 AM

    他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

    MySQLの学習:新しいユーザー向けの段階的なガイドMySQLの学習:新しいユーザー向けの段階的なガイドApr 19, 2025 am 12:19 AM

    MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

    MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

    MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

    MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

    MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

    MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

    MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

    SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

    SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

    初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

    MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。