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

`呼び出し時に値を送信しても送信しなくてもよい