ホームページ >データベース >mysql チュートリアル >SQLサーバーストアドプロシージャ
ストアド プロシージャ
[Create はストアド プロシージャを作成すること、Alter はストアド プロシージャを変更および変更することです]
[ストアド プロシージャを初めて作成する場合は、create を使用します。ストアド プロシージャのプログラムを変更する場合は、replace を使用します。 alter で作成してから実行する]
[データベースでは、開始と終了は中括弧を意味します]
· ストアド プロシージャを作成する形式:
--(プロシージャは proc と省略できます) proc はプログラムとステップを意味します。ストアド プロシージャ名が続きます
create proc ストアド プロシージャ名
as
コード ブロック
Go
--exec は実行を意味します。ストアド プロシージャを実行
Exec ストアド プロシージャ名
--------ストアド プロシージャを変更
alter proc hehe ---alter は変更、変更
を意味します
生徒番号、フェンシュウからの中国語スコアを選択
go
execへへ
---------------複数のテーブルをクエリ
create proc Chaxun
as
begin
select * from fenshu
select * from jiaoshi
select * from xuesheng
end
go
exec chaxun
--------------パラメータ付きストアドプロシージャ
create proc chucunguocheng
@yican varchar(20)、@yicanは正式を意味しますパラメータ
@ercan varchar(20)
as
begin
print @yican+@ercan
end
go
exec chucunguocheng 'こんにちは'、'中国'
質問例:
---- ---学生番号を入力して、学生が優秀であるか、卒業したかどうかを判断します (3 つのコースに合格すると優秀とみなされ、2 つのコースに合格すると修了とみなされます)
alter proc biye
@xuehao int — 入力変数を作成する
as
begin
declare @y int
declare @s int
declare @w int
declare @zongshu int
select @y=COUNT(*) from fenshu where 学生 ID=@xuehao と中国語スコア> =60
学生番号=@xuehao、数学のスコア>=60のフェンシュから@s=COUNT(*)を選択
学生番号=@xuehao、英語のスコア>=60のフェンシュから@w=COUNT(*)を選択
set @zongshu=@y+@s+@w
if @zongshu=3
print 'Excellent'
if @zongshu =2
print 'Complete'
if @ zongshu = 1g '卒業していません' を印刷
@zongshu = 0
'入力エラー' を印刷
End
Go
exec Biye 1
結果: ------- -------------------- --- 総合演習
@ybjbn nvarchar(20),@ykc int を宣言 --@ykc はデータ内の元の在庫番号です
select @ybjbn=count(name) from bijiben where name=@bjbn
if @ybjbn=0 - -データベースに入力されたデータがない場合
begin
bijiben 値 (@bianhao,@bjbn,@beizhu,@jiage,@jinhuo,@danwei) に挿入
print'新しいコンピューターが正常に追加されました! '
end
else if @ybjbn=1 -- データベースに入力データがある場合
begin
select @ykc=stock from bijiben where name=@bjbn
set @ykc=@ykc+@jinhuo
B Update bijiben set inventory =@ykc where name =@bjbn prop' このコンピュータ インベントリは正常に追加されました。 '終了終了goexec jinhuo 11,'Dell','dell',4200,10,'United States'---------------- -----配送--------------------------------create proc chuhuo --配送ストアド プロシージャを作成します@name nvarchar(20 ), -- 出荷されるノートブックの名前@shuliang int -- 出荷される数量asbegin 宣言 @ygeshu int,@hgeshu int --@ygeshuはデータベースの元の在庫、@hgeshu トランザクション select @ygeshu=stock from bijiben where name=@name if @shuliang>@ygeshu -- 出荷数量が在庫数量より大きい場合 print '申し訳ありません、在庫が不足しています~~'
else begin set @hgeshu=@ygeshu-@shuliang update bijiben set inventory=@hgeshu where name=@name --トランザクション print 'トランザクションは成功しました! '終了終了goexec chuhuo 'Apple',11--------------------------------------1つ削除ノートブック データ-----create proc qingchu@scbjbn nvarchar(20) --削除するノートブックの名前asbegin宣言 @sgeshu int --ノートブックが見つかります カウント select @sgeshu=COUNT(*) from bijiben where name=@scbjbn if @sgeshu=1 begin delete from bijiben where name=@scbjbn print'ノートブックのデータは無事に削除されました! ' end if @sgeshu=0 print 'この名前のノートブックは見つかりません~~'endexec qingchu 'Apple'