SQL格納プロセス関連

4880 ワード

まず、格納プロセスとは?記憶プロセスは、あるデータベースの特定の機能を完了するために作成されたステートメントセットです。この文集にはSQL文(データの添削を調べる)と条件文とクエリ文が含まれています。保存プロセスを作成します。保存プロセスの作成方法はとても簡単です。フォーマットは以下の通りです。
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 copy
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;
      :              u_real_name u_age     ,u_id     ,                  ;

          :
[sql]view plin copy
CALL 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 copy
SET@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、                                  ,              ,        。