SQL Server 2005は簡単なストレージプロセスを作成します。
1821 ワード
最近は仕事のためにSQL Server 2005データベース作成の簡単なストレージプロセスを理解しました。まず、どのように記憶プロセスを作成するかを説明します。CREATE PROCEDUEDR my_。pro@inputDate varrhar、/声明入力変数@Result varrclhar(255)output/声明出力変数AS declare@variable 1 varrhar(255)//文varhar変数declare@variable 2 int/声明整形変数BEGIN IF...(条件)BEGIN.以上の作成プロセスです。
二、保存プロセスDROP PROCEURE my_を削除する。プロ
三、格納プロセスを実行する(1)パラメータのない格納プロセスを実行する:EXECUTE my_pro(2)パラメータの格納プロセスを実行する:EXECUTE my_pro'入力変数'(1)パラメータがあり、かつリターン値がある格納プロセス:declare@Result varhar(1024)/ステートメント出力変数EXECUTE my_pro'入力変数'@Result output//この格納プロセス出力値を@Resultに保存させてselect@Result as result/クエリ結果を返します。
四、例の下では、複数のクエリの記録結果を一つの戻り値で返す必要があります。例えば、表Testの中には、Test 01とTest 02の2つのフィールドがあり、Test 01>10000のレコードをクエリTest 02の結果を統合して、レコードにまとめて返します。WSXEDCRFVTG.Test 01 Test 02 10000 QUZ 10001 WSX 10002 EDIC 10003 RFV 10004 TGバイトでは、格納プロセスを使用して、格納過程におけるラベルを使用して、forループで複数の記録を統合することができます。この問題は解決できます。具体的な格納過程は以下の通りです。DROP PORCEURE my_Curser//習慣性は、作成前に、まずこの記憶プロセスがCREATE PROCEURE my_があるかどうかを確認する。Currsor@id int、/声明入力変数@Result varrhar(255)output/声明出力変数は、必ずoutputキーワードがあることを注意してください。さもなければ、デフォルトは入力変数AS Declare city_です。cursor cursor for C宣言游標変数Select[Test 01]from Test where Test 01]@idのうち@idは入力変数Set@Result=''C設定変数@Result値Declare@Field intC宣言が検索したTest 01の変数Open cityを一時的に保存する。cursorCでランドマークFetch next from cityを開く。cursor into@Field Cは、実際のTest 01を変数に付与し、サイクルWhile(@fetchu)を行う。status=0)Cサイクル開始BEGIN If@Result=''BEGIN Select@Result=Test 02 from Test where Test 01=@Field END ELD BEGIN Select@Result=@Result+'、'+Test 02 from Test Testhere Test 01=@Field END Fetftch netxtcursor into@Field Cサイクル次のTest 01 END Close city ucursorCをオフにします。ラベルDeallocate city ucursor C解放游标引用GO(終了)以下はDeclare@Result varhar(1024)EXECUTE my_pro 10000、@Result output Coutputキーワードは必ず書かなければなりません。複数の入力パラメータなら、Select@Result as result Cクエリ結果を区別するために「、」を使います。
二、保存プロセスDROP PROCEURE my_を削除する。プロ
三、格納プロセスを実行する(1)パラメータのない格納プロセスを実行する:EXECUTE my_pro(2)パラメータの格納プロセスを実行する:EXECUTE my_pro'入力変数'(1)パラメータがあり、かつリターン値がある格納プロセス:declare@Result varhar(1024)/ステートメント出力変数EXECUTE my_pro'入力変数'@Result output//この格納プロセス出力値を@Resultに保存させてselect@Result as result/クエリ結果を返します。
四、例の下では、複数のクエリの記録結果を一つの戻り値で返す必要があります。例えば、表Testの中には、Test 01とTest 02の2つのフィールドがあり、Test 01>10000のレコードをクエリTest 02の結果を統合して、レコードにまとめて返します。WSXEDCRFVTG.Test 01 Test 02 10000 QUZ 10001 WSX 10002 EDIC 10003 RFV 10004 TGバイトでは、格納プロセスを使用して、格納過程におけるラベルを使用して、forループで複数の記録を統合することができます。この問題は解決できます。具体的な格納過程は以下の通りです。DROP PORCEURE my_Curser//習慣性は、作成前に、まずこの記憶プロセスがCREATE PROCEURE my_があるかどうかを確認する。Currsor@id int、/声明入力変数@Result varrhar(255)output/声明出力変数は、必ずoutputキーワードがあることを注意してください。さもなければ、デフォルトは入力変数AS Declare city_です。cursor cursor for C宣言游標変数Select[Test 01]from Test where Test 01]@idのうち@idは入力変数Set@Result=''C設定変数@Result値Declare@Field intC宣言が検索したTest 01の変数Open cityを一時的に保存する。cursorCでランドマークFetch next from cityを開く。cursor into@Field Cは、実際のTest 01を変数に付与し、サイクルWhile(@fetchu)を行う。status=0)Cサイクル開始BEGIN If@Result=''BEGIN Select@Result=Test 02 from Test where Test 01=@Field END ELD BEGIN Select@Result=@Result+'、'+Test 02 from Test Testhere Test 01=@Field END Fetftch netxtcursor into@Field Cサイクル次のTest 01 END Close city ucursorCをオフにします。ラベルDeallocate city ucursor C解放游标引用GO(終了)以下はDeclare@Result varhar(1024)EXECUTE my_pro 10000、@Result output Coutputキーワードは必ず書かなければなりません。複数の入力パラメータなら、Select@Result as result Cクエリ結果を区別するために「、」を使います。