SqlServerProc先看看简单吧

database

CREATEPRoc[名字]

{

@参数 数据类型,

@参数 数据类型

OUTPUT[输入]

}

AS

begin

selectINSERTUPDATE (SQL)

end

--基本语句快

--以上是语句库

--先看看不带参数的吧 他跟方法一样 可以带参数也可以不带参数(当然我没用过几次不带参数的)

--获取一个表吧这种都感觉像视图了

IF(SELECT*FROM sysobjects WHERE Name ="proc_table")

DROPPROC proc_table

GO

CREATEPROC proc_table

AS

SELECT*FROM Users WHERE S_ID=""

GO

EXEC proc_table

 

--带参数的吧--就看看登录的SQL吧

IF(SELECT*FROM sysobjects WHERE Name ="P_LOG")

DROPPROC P_LOG

GO

CREATEPROC P_LOG

@acctountVARCHAR(50),

@accountpwdVARCHAR(50)

AS

BEGIN

SELECTCOUNT(*) FROM Users WHERE U_LoginName=@acctountAND U_Password=@accountpwd;

END

EXEC P_LOG"1","123456"
--C#orjava 调了之后直接判断有没有值即可
--这是返回单行单列。需要用返回单行单列的放方法去接收

--再看看输出参数的存储过程

在JAVA中我们需要调用带参的方法时需要传参给形参,列入比较两个大小的方法 int compare( int first ,int second),比较10 和20的大小,则调用形式:tempcompare(10,20),方法compare返回值赋值给变量为tmp.

存储过程中也有与很像是,有两种类型的参数的参数

  ~输入参数:调用是像存储过程传实参,用来向PROC传值

  ~输出参数: 同JAVA 如果希望参数可以带出方法,则可以使用输出参数值带出方法,则可以输出参数,通过定义参数 "OUTPUT"标记 ,表明该参数是输出参数  ,执行存储过程后吧  返回值存放在输出中-

可以给其他T-SQL 语句访问,

CREATEproc[dbo].[P_GetConsumeOrderPaged]

@PageSizeint,

@PageIndexint,

@Countint output,

@MC_CradIDvarchar(20),

@MC_Mobilevarchar(20),

@BeginDatevarchar(20),

@EndDatevarchar(20),

@CO_OrderTypeint,

@S_IDint

as

begin

selecttop(@PageSize) *from ConsumeOrders M innerjoin MemCards A on M.MC_ID=A.MC_ID innerjoin CategoryItems B on M.CO_OrderType=B.CI_ID

where A.S_ID=@S_IDand M.CO_ID notin(

selecttop(@PageSize*(@PageIndex-1)) M.CO_ID from ConsumeOrders M innerjoin MemCards A on M.MC_ID=A.MC_ID innerjoin CategoryItems B on M.CO_OrderType=B.CI_ID

and A.S_ID=@S_IDand B.C_Category="CO_OrderType"and ((A.MC_CardID=@MC_CradIDor A.MC_Mobile=@MC_Mobile) or (@MC_CradID=""and@MC_Mobile="")) and ((@BeginDate=""or@EndDate="") or (M.CO_CreateTime between@BeginDateand@EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))

)

and B.C_Category="CO_OrderType"and ((A.MC_CardID=@MC_CradIDor A.MC_Mobile=@MC_Mobile) or (@MC_CradID=""and@MC_Mobile="")) and ((@BeginDate=""or@EndDate="") or (M.CO_CreateTime between@BeginDateand@EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))

select@Count=COUNT(*) from ConsumeOrders M innerjoin MemCards A on M.MC_ID=A.MC_ID innerjoin CategoryItems B on M.CO_OrderType=B.CI_ID where A.S_ID=@S_IDand B.C_Category="CO_OrderType"and ((A.MC_CardID=@MC_CradIDor A.MC_Mobile=@MC_Mobile) or (@MC_CradID=""and@MC_Mobile="")) and ((@BeginDate=""or@EndDate="") or (M.CO_CreateTime between@BeginDateand@EndDate)) and ((@CO_OrderType=0) or (M.CO_OrderType=@CO_OrderType))

end

GO

 

-- 创建参数带有默认值的PROC

在调PROC时,有些参数变化很少,这时,可以给这些参数一个默认值,即使调用时不输入值,也会在存储过程中使用默认值,在很大程度上方便调。

IF(SELECT*FROM sysobjects WHERE Name ="proc_insertstu")

DROPPROC proc_insertstu

GO

create pro proc_insertstu

@stunamevarchar(20),

@stusexchar(2)=""

@classidint=2

AS

begin

INSERTINTO stuinfoO(StuName,stusexmclassid)

values(@stuname ,@stusex,@classid )

end

go

exec proc_insertstu"唐胜"

exec proc_insertstu"‘‘ZHUBAJIE’@CLASSID=1

`调用时可以传值也可以不传

 

以上是 SqlServerProc先看看简单吧 的全部内容, 来源链接: utcz.com/z/532353.html

回到顶部