ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Sql Server Proc 先看看简单吧

2020-02-22 15:02:24  阅读:252  来源: 互联网

标签:CO MC Mobile OrderType Server 参数 Sql Proc ID


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

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

  ~输入参数:调用是像存储过程传实参,用来向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

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

 

标签:CO,MC,Mobile,OrderType,Server,参数,Sql,Proc,ID
来源: https://www.cnblogs.com/yijieyufu/p/12345403.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有