ホームページ  >  記事  >  データベース  >  SQLサーバーストアドプロシージャ

SQLサーバーストアドプロシージャ

伊谢尔伦
伊谢尔伦オリジナル
2016-12-03 10:23:481409ブラウズ

ストアド プロシージャ

[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

結果: ------- -------------------- --- 総合演習 SQLサーバーストアドプロシージャ

(ストアド プロシージャの総合演習)

商品テーブルを作成します: 番号、商品名、単位、価格、在庫数、備考。 (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' このコンピュータ インベントリは正常に追加されました。 '

終了

終了

go

exec jinhuo 11,'Dell','dell',4200,10,'United States'

---------------- -----配送--------------------------------

create proc chuhuo --配送ストアド プロシージャを作成します

@name nvarchar(20 ), -- 出荷されるノートブックの名前

@shuliang int -- 出荷される数量

as

begin

宣言 @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 'トランザクションは成功しました! '

終了

終了

go

exec chuhuo 'Apple',11

--------------------------------------1つ削除ノートブック データ-----

create proc qingchu

@scbjbn nvarchar(20) --削除するノートブックの名前

as

begin

宣言 @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 'この名前のノートブックは見つかりません~~'

end

exec qingchu 'Apple'


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。