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倒是又一样了。
这些只是简单的存储过程的编写,重要的还是业务上面的实现,以后等有学习体会再来展示。。