MySQL和SQLServer的存储过程

1.MySQL的存储过程

   存储过程从易到难有多种方式组合,无参数请求,in方式请求,out方式请求,in和out混合请求。我这边是一个简易的in和out混合请求的示例。

delimiter $$
create procedure pro2(
in p_ccpid INTEGER,
out p_cardholder VARCHAR(200)
)
BEGIN
select cardholder into p_cardholder from flx_creditcard_payment_temp where ccpid = p_ccpid;
END
$$
delimiter;

传入的参数位p_ccpid,输出的参数是p_cardholder,最终就是要根据传入的参数得到最后的输出参数。这里需要说的是,格式和一些关键字不要打错和放错位置,不然很头疼。并且你需要把MySQL和SQL server区分开,它们两个的存储过程完全不同。

call pro2(592107,@p_cardholder);
select @p_cardholder;

当你写完一个存储过程,且控制台没有报错,这个时候去刷新下你的函数目录就可以看到你的存储过程了。然后就是执行了。call pro2代表执行存储过程,里面是参数,前者是输入,后者是输出,最后在第二行查询输出的值。在我看来,输出的值就是把你想查询出的字段用别名的方式显示出来。

drop procedure pro3
删除存储过程的代码很简单,跟开关数据库差不多,drop+关键字+存储过程名就可以了。

2.SQL server存储过程

create procedure query1 @p_ccpid int 
as 
select cardholder from flx_creditcard_payment where ccpid = @p_ccpid;
go

新建一个query1的存储过程,给一个p_ccpid位入参,sql语句简单的话可以省略begin....end语句,其实go也可以省略的

declare @p_ccpid int =2
exec query1 @p_ccpid

给入参传入相应的值,执行sql即可。

根据ccpid查询出相应的人名,注意顺序和mysql不一致,最后的执行顺序也不一致
create procedure query4 (@p_ccpid int,@p_cardholder varchar(200) output)
as
begin
select @p_cardholder=cardholder from flx_creditcard_payment where ccpid=@p_ccpid
end

declare @p_cardholder2 varchar(200)
exec query4 1,@p_cardholder2 output
print @p_cardholder2

注意,此处的output就是mysql中的out,最下面的执行语句分为三部分,第一行声明输出参数,第二行执行存储过程并赋值,第三行打印输出参数。并且执行存储过程的方式和上面的入参存储过程采用的是不同的执行手段。

drop procedure dbo.query4

删除存储过程和mysql倒是又一样了。

这些只是简单的存储过程的编写,重要的还是业务上面的实现,以后等有学习体会再来展示。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值