ストアド プロシージャ
[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
結果: ------- -------------------- --- 総合演習
(ストアド プロシージャの総合演習) 商品テーブルを作成します: 番号、商品名、単位、価格、在庫数、備考。 (10個のデータ) の後、商品を購入します。商品がすでに存在する場合は、数量を増やしてデータベーステーブルに追加します。 発送、誰かが商品を欲しい場合は、数量が十分であるかどうかを判断し、在庫を十分に減らします。そうでない場合は、欠品を通知します。 データベース内のデータがある場合は、名前に基づいていつでも削除します。ない場合は、通知します。 ----------データベースとデータテーブルの作成、データの挿入----------データベースノートブックの作成 goテーブルの作成 bijiben ( 数値 int, 名前 nvarchar(20), 備考 varchar(20), 価格 int, 在庫 int, 単位 nvarchar(10)) go -- ---(ランダムランキング)------bijiben 値に挿入(1,'Apple','macbook',12000,10,'United States')bijiben 値に挿入(2,' Acer ','acer',3500,20,'中国')bijiben 値に挿入(3,'Asus','asus',3500,25,'中国')bijiben 値に挿入(4, 'Dell ','dell',4300,30,'米国')bijiben 値に挿入(5,'神州','hass',4000,20,'中国')bijiben 値に挿入(6, ' Lenovo','lenovo',4200,30,'中国')bijiben 値に挿入(7,'HP','ph',3600,20,'米国')bijiben 値に挿入(8, 'Samsung','samsung',3700,10,'Japan')bijiben 値に挿入(9,'Sony','sony',7000,10,'Japan')bijiben 値に挿入(10, '東芝','東芝',3200,10,'日本') *ビジベンから選択---------------------- -入荷- -----------------------create proc jinhuo --購入ストアドプロシージャを作成@bianhao int, --購入番号 @bjbn nvarchar( 20)、--ノートブック名@beizhu nvarchar(20)、--備考@jiage int、--価格@jinhuo int、-単位数@danwei nvarchar(20) )--単位 として開始@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'