SQL格納プロセス関連
4880 ワード
まず、格納プロセスとは?記憶プロセスは、あるデータベースの特定の機能を完了するために作成されたステートメントセットです。この文集にはSQL文(データの添削を調べる)と条件文とクエリ文が含まれています。保存プロセスを作成します。保存プロセスの作成方法はとても簡単です。フォーマットは以下の通りです。
CALL create_テーブル()例二——作成したテーブルにデータを追加します。保存プロセスを作成します。
[sql]view plin copy
DELIMITER&CREATE PROCEURE insert_data(IN uqualuage VRCHARR(8)、IN uuuuuuuage INT(3)、OUT uuid INT(11))LANGUAGE SQL BEGIN INSERT INTO USER(realame、age)VLUES(utualuage、uage);SET_id=LAST_INSERT_ID();〹またはSET_id=@@IDENTITY;END&&DELIMITER;
CALL insert_data(''小明',21,@uuuid);SELECT@u_id;
SET@u_リアル.name='王';CALL num_fromuser(@uguraluuname、@count_num);SELECT@count_num AS total説明:上に王という人の数が表示されていますが、そのうち@u_リアル.nameと@count_numはユーザー名変数です。例5——主キーIDに従ってデータを削除する:格納プロセスを作成する:
CREATE PROCEDURE proc_name ([proc_parameter[,...]])
[characteristic]
routine_body
説明:proc_nameは、ストレージプロセス名を表します。procparameterは、格納プロセスパラメータのリストを表します。このリストの各パラメータは、入出力タイプ、パラメータ名、パラメータタイプの3つの部分から構成されています。その形式は以下の通りです。[IN_OUT]:出力タイプ(INは入力パラメータ、OUTは出力パラメータを表します。INOUTは入力も出力もできます。入出力タイプも削除できます。デフォルトはinです。パラガ.nameはパラメータ名を表します。typeは、MYSQLデータベースの任意のデータタイプとすることができるパラメータタイプを表します。注意:MYSQLデータベース格納プロセスは、パラメータリスト括弧の後に「as」のキーワードを追加する必要はないが、SQL Serverデータベースに格納するプロセスには「as」のキーワードが必要である。characteristicは、格納プロセスの特性を指定します。このパラメータは複数の値があります。LANGUAGE SQL:routine_を説明します。body部分はSQL言語の文で構成され、データベースシステムの標準値です。[NOT]DETERMNISTIC:格納過程の実行結果が確定しているかを指定します。DETERMNISTICは結果が確定していることを示しています。この場合、格納プロセスを実行するたびに、先に入力した入力は同じ出力になります。NOT_DETERMNISTICは結果が不確定であることを示しており、同じ入力では異なる出力が得られ、デフォルトでは不確定となります。{CONTAINS SQL_No SQL_DATA_MODIFIES SQL DATA}:サブプログラムを指定してSQL文を使用する制限。CONTAINS SQLは、サブルーチンにSQL文が含まれているが、データを読むまたは書く文は含まれていないことを示している。MODIFIES SQL DATAは、サブルーチンにデータを書き込む文言を表します。デフォルトはCONTAINS SQLです。SQL SQCURITY{DEFINER_INVOKER}:誰に権限があるかを指定して実行します。DEFINERは定義者だけが自分で実行できるという意味です。INVOKERは使用者が実行できることを表しています。デフォルトはDEFINERですCOMMENT'string':プロセス注釈情報を格納する。routine_body_パラメータは格納プロセス体、BEGIN…ENDフラグ記憶プロセス体の開始と終了です。ストレージプロシージャは、SELECT、UPDATE、INSERT、DELETE、CREATE TABLE、などのSQL文であっても良いし、他のプロシージャを呼び出すコードを埋め込むこともできます。他のコードでもいいです。注意:MYSQL記憶中に「リセット」というキーワードは使用できません。例として、記憶プロセスを使用してテーブルの構造を作成します。delimiter $$
create procedure create_table()
language sql
begin
create table 'user'(
'id' int(11) not null auto_incerment commit ' ',
'real_name ' varchar(8) not null comment ' ',
'age' int (3) default null comment ’ ‘,
' primary key' ('id')
)engine=innodb auto_increment=1 default charset=utf8;
end &&
delimiter;
説明:上にcreate_という名前を作りました。テーブルの格納過程。 :MySQL (;), SQL , , "DELIMITER &&" MySQL &&, "DELIMITER ;" 。 。
:
[sql]view plin copyCALL create_テーブル()例二——作成したテーブルにデータを追加します。保存プロセスを作成します。
[sql]view plin copy
DELIMITER&CREATE PROCEURE insert_data(IN uqualuage VRCHARR(8)、IN uuuuuuuage INT(3)、OUT uuid INT(11))LANGUAGE SQL BEGIN INSERT INTO USER(realame、age)VLUES(utualuage、uage);SET_id=LAST_INSERT_ID();〹またはSET_id=@@IDENTITY;END&&DELIMITER;
: u_real_name u_age ,u_id , ;
:
[sql]view plin copyCALL insert_data(''小明',21,@uuuid);SELECT@u_id;
—— :
:
[sql] view plain copy
DELIMITER &&
CREATE PROCEDURE update_data (IN u_id INT(11),IN u_real_name VARCHAR(8), IN u_age INT(3))
LANGUAGE SQL
BEGIN
UPDATE USER SET real_name = u_real_name, age = u_age WHERE id = u_id;
END &&
DELIMITER ;
:
CALL update_data(1,' ',18);
—— :
:
[sql] view plain copy
DELIMITER &&
CREATE PROCEDURE num_from_user (IN u_real_name VARCHAR(15), OUT count_num INT)
READS SQL DATA
BEGIN
SELECT COUNT(*) INTO count_num FROM USER WHERE real_name LIKE u_real_name;
END &&
DELIMITER ;
: u_real_name ;count_num 。
SELECT文はuser表から曖昧に調べられます。name値はu_に等しいリアル.nameの記録をCOUNT(*)で集計し、結果をcount(u)に保存します。num中保存プロセスを呼び出します。[sql]view plin copySET@u_リアル.name='王';CALL num_fromuser(@uguraluuname、@count_num);SELECT@count_num AS total説明:上に王という人の数が表示されていますが、そのうち@u_リアル.nameと@count_numはユーザー名変数です。例5——主キーIDに従ってデータを削除する:格納プロセスを作成する:
[sql] view plain copy
DELIMITER &&
CREATE PROCEDURE delete_data (IN u_id INT(11), OUT effect_number INT(3))
LANGUAGE SQL
BEGIN
DELETE FROM USER WHERE id = u_id;
SET effect_number = ROW_COUNT();#ROW_COUNT()
END &&
DELIMITER ;
:
[sql] view plain copy
CALL delete_data(1, @effect_number);
SELECT @effect_number;
:
:SHOW PROCEDURE STATUS WHERE db=' '; SHOW CREATE PROCEDURE . ;
:
:DROP PROCEDURE
:
1、 SQL 。 , , ;
2、 , 。 , , SQL ;
3、 , , SQL , 。
4、 , , 。