MySQL存储过程编程教程读书笔记-第二章MySQL存储过程编程指南-存_MySQL
bitsCN.com
MySQL存储过程编程时一个复杂的主题,我们将在本章中为你提供完成基本任务的内容,其中包括:
1、怎样创建存储过程
2、存储过程怎样进行输入输出
3、怎样和数据库交互
4、怎样用MySQL存储编程语言创建过程,函数和触发器
第一个存储过程实例:
delimiter $$drop procedure if exists HelloWorld$$create procedure HelloWorld()begin select "Hello World";end $$变量
本地变量可以用declare语句进行声明。变量名称必须遵循MySQL的列明规则,并且可以使MySQL内建的任何数据类型。你可以用default字句给变量一个初始值,并且可以用SET语句给变量赋一个新值
delimiter $$drop procedure if exists variable_demo$$begin declare my_integer int; declare my_big_integer bigint; declare my_currency numeric(8, 2); declare my_pi float default 3.1415926; declare my_text text; declare my_dob date default '1960-06-21'; declare my_varchar varchar(30) default "Hello World!"; set my_integer = 20; set my_big_integer = power(my_integer, 3);end $$delimiter;
参数
参数可以使我们的存储程序更为灵活,更为实用。参数包括IN(只读模式), INOUT(可读写模式)和OUT(只写模式)。IN模式作为缺省的参数模式。
IN:任何对于该参数的修改都不会返回给调用它的程序
OUT:这个模式意味着存储过程可以对参数赋值(修改参数的值),并且这个被修改的值会被返回给它的调用程序
INOUT:这个模式意味着存储过程即可读取传入的参数,而且任何对于该参数的修改对于它的调用程序而言都是可见的
对于存储函数而言,只能使用IN模式
delimiter $$drop procedure if exists my_sqrt$$create procedure my_sqrt(input_number int, out out_number float)begin set out_number = SQRT(input_number);end $$delimiter;
call my_sqrt(12, @out_value) $$select @out_value $$条件执行
通过购买量的多少来计算出贴现率的存储程序,购买量超过$500可以返回20%,购买量超过$100可以返回10%。
delimiter $$drop procedure if exists discounted_price$$create procedure discounted_price(normal_price NUMERIC(8, 2), out discount_price NUMBERIC(8, 2))begin if (normal_price > 500) then set discount_price = normal_price*.8; else if (normal_price > 100) then set discount_price = normal_price*.9; else set discount_price = normal_price; end if;end$$delimiter;循环
MySQL存储程序语言提供了三种类型的循环
使用LOOP和END LOOP字句的简单循环
当循环条件为真时继续执行的循环,使用WHILE和END WHILE字句
循环直至条件为真,使用REPEAT和UNTIL字句
在这三种循环中,你都可以使用LEAVE字句来终止循环
DELIMITER $$DROP PROCEDURE IF EXISTS simple_loop$$CREATE PROCEDURE simple_loop()BEGIN DECLARE counter INT DEFAULT 0; my_simple_loop: LOOP SET counter = counter 1; IF counter = 10 THEN LEAVE my_simple_loop; END IF; END IF;END LOOP my_simple_loop;select "I can count to 10";END$$ DELIMITER;错误处理
1、如果你认为内嵌的SQL语句会返回空记录,或者你想用游标捕获SELECT语句所返回的记录,那么一个NO FOUND 错误处理可以防止存储过程过早的被终止
2、如果你认为SQL语句可能返回错误(比如违背约束条件),你可以创建一个错误处理来阻止程序终止。这个处理将代替你的默认错误处理并继续程序的执行。
和数据库交互
大多数存储过程包含了各种和数据库表的交互,它们包括四种主要的交互:
1、将一个SQL语句所返回的单个记录放入本地变量中。
2、创建一个“游标”来迭代SQL语句所返回的结果集
3、执行一个SQL语句,将执行后的结果集返回给它的调用程序
4、内嵌一个不反悔结果集的SQL语句,如INSERT,UPDATE, DELETE等
对本地变量使用SELECT INTO
当需要在单个记录数据中获取查询信息,你就可以使用SELECT INTO 语法(无论是使用单个记录,多个记录的混合数据,还是多个表连接)。在这种情况下,你可以再SELECT语句中跟随一个INTO子句,告诉MySQL得到的查询数据返回给谁
DELIMITER $$ DROP PROCEDURE IF EXISTS customer_sales $$ CREATE PROCEDURE customer_sales(int_customer_id INT) READS SQL DATA BEGIN DECLARE total_sales NUMERIC(8, 2); SELECT SUM(sale_value) INTO total_sales FROM sales WHERE customer_id = in_customer_id; SELECT CONCAT('Total sales for ', in_customer_id, 'is', 'total_sales'); END; $$
使用游标
SELECT INTO 定义了单记录查询,但是很多应用程序要求查询多记录数据,你可以使用MySQL中的游标来实现这一切,游标允许你将一个或更多的SQL结果集放进存储程序变量中,通常用来执行结果集中各个单记录的处理。
DELIMITER $$ DROP PROCEDURE cursor_example() READ SQL DATA BEGIN DECLARE l_employee_id INT; DECLARE l_salary NUMERIC(8, 2); DECLARE l_department_id INT; DECLARE done INT DEFAULT 0; DECLARE curl CURSOR FOR SELECT employee_id, salary, department_id FROM employees; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN curl; emp_loop : LOOP FETCH curl INTO l_employee_id, l_salary, l_department_id; IF done = 1 THEN LEAVE emp_loop; END IF; END LOOP emp_loop;
END;$$ bitsCN.com

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









6月24日の当サイトのニュースによると、6月21日のHDC2024ファーウェイ開発者カンファレンスの基調講演で、ファーウェイ端末BGソフトウェア部門社長のGong Ti氏が、ファーウェイが自社開発したCangjieプログラミング言語を正式に発表した。この言語は 5 年間開発されており、現在開発者プレビューが利用可能です。ファーウェイの公式開発者ウェブサイトは、開発者がプログラミング言語を使い始めて理解しやすくするために、Cangjie プログラミング言語の公式入門チュートリアルビデオを公開しました。このチュートリアルでは、ユーザーが倉街を体験し、倉街を学び、倉街を応用することができます。これには、倉街言語を使用した円周率の推定、2024 年の各月の幹と枝のルールの計算、倉街言語で二分木を表現する N 通りの方法の確認、列挙の使用などがあります。代数計算を実装するタイプ、インターフェイスと拡張機能を使用した信号システム シミュレーション、Cangjie マクロを使用した新しい構文など。このサイトのチュートリアル アクセス アドレス: ht

本サイトは6月21日、本日午後のHDC2024 Huawei Developer Conferenceで、Huawei Terminal BG Software部門のGong Ti社長がHuaweiが自社開発したCangjieプログラミング言語を正式に発表し、HarmonyOSNEXT Cangjie言語の開発者プレビュー版をリリースしたと報じた。ファーウェイがCangjieプログラミング言語を公的にリリースするのはこれが初めてである。 Gong Ti 氏は次のように述べています。「2019 年に、Cangjie プログラミング言語プロジェクトが Huawei で誕生しました。5 年間の研究開発の蓄積と多額の R&D 投資を経て、今日、ついに世界の開発者と出会うことができました。Cangjie プログラミング言語は、最新の言語機能、包括的なコンパイルの最適化、ランタイム実装を統合しています」すぐに使用できる IDE ツール チェーンのサポートにより、開発者にとって使いやすい開発エクスペリエンスと優れたプログラム パフォーマンスが実現します。「レポートによると、Cangjie プログラミング言語はあらゆるシナリオに対応するインテリジェンス ツールです。

6月21日の当サイトのニュースによると、ファーウェイが自社開発した倉街プログラミング言語が本日正式に発表され、公式はHarmonyOSNEXT倉街言語開発者プレビューベータ募集の開始を発表した。このアップグレードは、開発者プレビュー バージョンへの早期導入アップグレードであり、開発者が倉街言語を使用して HarmonyOSNext アプリケーションを開発、デバッグ、実行するための倉街言語 SDK、開発者ガイド、および関連する DevEcoStudio プラグインを提供します。登録期間: 2024 年 6 月 21 日から 2024 年 10 月 21 日まで 応募要件: この HarmonyOSNEXT Cangjie 言語開発者プレビュー ベータ募集イベントは、次の開発者のみが参加できます: 1) Huawei Developer Alliance 認定資格を実名で取得していること。 2) H を完了していること。

6月22日のこのサイトのニュースによると、ファーウェイは昨日、ファーウェイが自社開発したプログラミング言語Cangjieを世界中の開発者に紹介した。 Cangjie プログラミング言語が公に公開されるのはこれが初めてです。当サイトの問い合わせによると、ファーウェイの「蒼傑」の研究開発には天津大学と北京航空航天大学が深く関与していた。天津大学:倉街プログラミング言語コンパイラ 天津大学知能計算学部のソフトウェアエンジニアリングチームは、ファーウェイの倉街チームと協力して、倉街プログラミング言語コンパイラの品質保証研究に深く参加しました。報告によると、Cangjie コンパイラは、Cangjie プログラミング言語と共生する基本ソフトウェアです。 Cangjie プログラミング言語の準備段階では、それに匹敵する高品質のコンパイラが中心的な目標の 1 つになりました。 Cangjie プログラミング言語が進化するにつれて、Cangjie コンパイラは常にアップグレードおよび改善されています。過去5年間、天津大学

6月21日のこのサイトのニュースによると、HDC2024 Huawei Developer Conferenceの前に、Huaweiが自社開発したCangjieプログラミング言語が正式に公開され、Cangjieの公式ウェブサイトがオンラインになりました。公式ウェブサイトの紹介文によると、Cangjie プログラミング言語は、「ネイティブ インテリジェンス、自然なオール シナリオ、高性能、強力なセキュリティ」に焦点を当てた、オール シナリオ インテリジェンスのための新世代プログラミング言語です。 Honmeng エコシステムに統合して、開発者に優れたプログラミング エクスペリエンスを提供します。このサイトに付属する公式 Web サイトでは、AgentDSL を組み込んだネイティブのインテリジェント プログラミング フレームワーク、自然言語とプログラミング言語の有機的な統合、マルチエージェントの連携、簡素化された記号表現、パターンの自由な組み合わせ、さまざまなインテリジェント アプリケーションの開発をサポート、と紹介されています。あらゆるシーンに対応する本質的に軽量でスケーラブルなランタイム、モジュラー階層設計により、メモリがどれほど小さくても、あらゆるシナリオのドメイン拡張に対応できます。

C++ と他の最新のプログラミング言語の長所と短所を比較すると、次のとおりです。 C++ の利点: 高性能、低レベルの制御、豊富なライブラリ エコシステム。 C++ の欠点: 急な学習曲線、手動メモリ管理、限られた移植性。 Python の利点: スムーズな学習曲線、広範なライブラリのサポート、インタープリタ型言語。 Java の利点: プラットフォームに依存しない、自動メモリ管理、幅広いアプリケーション。 JavaScript の利点: フロントエンド開発に不可欠、軽量、動的型。

6月21日のニュースによると、本日午後、Huawei Developer Conference 2024が正式に開幕するとのこと。 「純血Hongmeng」Harmony OS NEXTは当然のことながら最優先事項であるYu Chengdong氏が以前に明らかにした計画によれば、今日の午後にパブリックベータ版が正式に発表され、一般消費者も「純血Harmony」を試すことができるようになる。報道によると、最初にサポートされる携帯電話はMate60シリーズとPura70シリーズだという。 「純血のHongmeng」として、HarmonyOSNEXTが従来のLinuxカーネルとAOSP Androidオープンソースコードを削除し、スタック全体を社内で開発したことは注目に値します。 Sina Technologyの最新レポートによると、HuaweiはHongmengエコシステムの最後のリンクも完成し、世界での存在感を拡大する予定です。

6月21日の当サイトのニュースによると、ファーウェイが自社開発した倉街プログラミング言語が本日正式に発表され、HarmonyOSNEXT倉街言語開発者プレビュー版のベータ募集が開始された。 Huaweiの公式WebサイトにあるCangjie Programming Language Q&Aページによると、Cangjie Programming Languageはオールシナリオインテリジェンスを指向した次世代アプリケーションプログラミング言語であり、ネイティブインテリジェンス、ネイティブオールシナリオ、高性能、強力なセキュリティに重点を置いています。 Honmen システムと組み合わせて、優れたプログラミング体験を提供します。さまざまなビジネス シナリオに合わせて、Hongmeng Ecosystem はアプリケーション開発者に Cangjie や ArkTS などの多言語ハイブリッド開発機能を提供します。 Cangjie と ArkTS は共に発展し、Hongmeng エコシステムにおいて補完的な利点を形成します。 Cangjie は、高いパフォーマンスと高い同時実行性が要求されるビジネス シナリオに適しています。Cangjie プログラミング言語の目的は、タスクを同時に実行する Honmeng アプリケーションを作成することです。
