欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Sql Server Proc 先看看简单吧

程序员文章站 2022-05-04 14:21:11
CREATE PRoc [名字] { @参数 数据类型, @参数 数据类型 OUTPUT[输入] } AS begin select INSERT UPDATE (SQL) end --基本语句快 --以上是语句库 --先看看不带参数的吧 他跟方法一样 可以带参数也可以不带参数(当然我没用过几次不带 ......
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

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