Sql Server Procはまず簡単さを見てみましょう
17585 ワード
CREATE PRoc [ ]
{
@ ,
@
OUTPUT[ ]
}
AS
begin
select INSERT UPDATE (SQL)
end
--
--以上は文ベース
--まずパラメータを持たないのを見てみましょう.彼は方法と同じようにパラメータを持ってもいいし、パラメータを持たなくてもいいです(もちろん私は何度もパラメータを持たないのを使ったことがありません)
--テーブルを取得しましょう.これはビューのような感じがします.
IF(SELECT * FROM sysobjects WHERE Name ='proc_table')
DROP PROC proc_table
GO
CREATE PROC proc_table
AS
SELECT * FROM Users WHERE S_ID=''
GO
EXEC proc_table
--パラメータ付きでしょう--ログインしたSQLを見てみましょう
IF(SELECT * FROM sysobjects WHERE Name ='P_LOG')
DROP PROC P_LOG
GO
CREATE PROC P_LOG
@acctount VARCHAR(50),
@accountpwd VARCHAR(50)
AS
BEGIN
SELECT COUNT(*) FROM Users WHERE U_LoginName=@acctount AND U_Password=@accountpwd;
END
EXEC P_LOG'1','123456'
--C#orjava
-- 。
--出力パラメータの格納手順を見てみましょう
JAVAでは、パラメータ付きメソッドを呼び出す際にパラメータに渡す必要があり、2つのサイズを比較するメソッドint compare(int first,int second)に組み入れ、10と20のサイズを比較すると、呼び出し形式:tempcompare(10,20)、メソッドcompare戻り値付与変数tmp.
記憶中に似た2種類のパラメータがあるパラメータもあります
~入力パラメータ:呼び出しはストレージ・プロシージャのように実パラメータを転送し、PROCに値を転送するために使用されます.
~出力パラメータ:JAVAと同様にパラメータ持ち出し方法を希望する場合は、出力パラメータ値持ち出し方法を使用することができ、パラメータを出力することができ、パラメータ「OUTPUT」タグを定義することで、このパラメータが出力パラメータであることを示し、記憶プロセスを実行した後に戻り値を出力中に格納する-
他のT-SQL文にアクセスできます.
CREATE proc [dbo].[P_GetConsumeOrderPaged]
@PageSize int,
@PageIndex int,
@Count int output,
@MC_CradID varchar(20),
@MC_Mobile varchar(20),
@BeginDate varchar(20),
@EndDate varchar(20),
@CO_OrderType int,
@S_ID int
as
begin
select top(@PageSize) * from ConsumeOrders M inner join MemCards A on M.MC_ID=A.MC_ID inner join CategoryItems B on M.CO_OrderType=B.CI_ID
where A.S_ID=@S_ID and M.CO_ID not in(
select top(@PageSize*(@PageIndex-1)) M.CO_ID from ConsumeOrders M inner join MemCards A on M.MC_ID=A.MC_ID inner join CategoryItems B on M.CO_OrderType=B.CI_ID
and A.S_ID=@S_ID and B.C_Category='CO_OrderType' and ((A.MC_CardID=@MC_CradID or A.MC_Mobile=@MC_Mobile) or (@MC_CradID='' and @MC_Mobile='')) and ((@BeginDate='' or @EndDate='') or (M.CO_CreateTime between @BeginDate and @EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))
)
and B.C_Category='CO_OrderType' and ((A.MC_CardID=@MC_CradID or A.MC_Mobile=@MC_Mobile) or (@MC_CradID='' and @MC_Mobile='')) and ((@BeginDate='' or @EndDate='') or (M.CO_CreateTime between @BeginDate and @EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))
select @Count=COUNT(*) from ConsumeOrders M inner join MemCards A on M.MC_ID=A.MC_ID inner join CategoryItems B on M.CO_OrderType=B.CI_ID where A.S_ID=@S_ID and B.C_Category='CO_OrderType' and ((A.MC_CardID=@MC_CradID or A.MC_Mobile=@MC_Mobile) or (@MC_CradID='' and @MC_Mobile='')) and ((@BeginDate='' or @EndDate='') or (M.CO_CreateTime between @BeginDate and @EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))
end
GO
--パラメータにデフォルト値が設定されているPROCを作成します.
PROCを調整するとき、パラメータの変化が少ない場合、これらのパラメータにデフォルト値を与えることができます.呼び出し時に値を入力しなくても、記憶中にデフォルト値を使用し、調整が大幅に便利です.
IF(SELECT * FROM sysobjects WHERE Name ='proc_insertstu')
DROP PROC proc_insertstu
GO
create pro proc_insertstu
@stuname varchar(20),
@stusex char(2)=' ',
@classid int =2
AS
begin
INSERT INTO stuinfoO(StuName,stusexmclassid)
values(@stuname ,@stusex,@classid )
end
go
exec proc_insertstu' '
exec proc_insertstu'‘‘ZHUBAJIE’@CLASSID=1
`呼び出し時に値を送信しても送信しなくてもよい