在使用CallableStatement的时候遇到很大瓶颈,它执行的不再是一个现写的sql语句,而是调用数据库的存储过程。我向毛主席发誓,我上《数据库原理》课也没怎么逃课呀,老师上课真的没有讲过什么“存储过程”的概念。为此,怎么在sql server中创建存储过程成了一个棘手问题,探索了好久才把这个问题攻克。
先来说说“存储过程的优点”,网上查的,总结一下大概就是安全,创建时编译后以后使用都不用再编译,可以设置参数,可以反复使用。
这里列出下一篇日志代码中用到的几个存储过程,打开sql server2008,依次展开左侧的对象资源管理器中的树状目录 :数据库->TestDB(自己的数据库名称)->可编程性,此时就可以看到“存储过程”节点了,鼠标右键新建存储过程,就会打开sql查询编辑器,同时里面已经列出了创建存储过程的相关语句提示。
好了,列出我创建的8个存储过程:
一,pro_inserttnt:
CREATE PROCEDURE pro_inserttnt
AS
insert into cchild values('test','testson','1995-05-06',15)
GO
在sql server2008执行这个存储过程的方法:打开sql 查询语句编辑器,敲入语句exec dbo.pro_inserttnt;执行。
二,pro_insert
CREATE PROCEDURE pro_insert(@cusername varchar(50),@para2 varchar(50),@pa3 varchar(50),@par4 int)
AS
insert into cchild values(@cusername,@para2,@pa3,@par4)
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_insert 'hello','helloson2','1994-06-01',16 执行
三,pro_update_age_by_birthday
CREATE PROCEDURE pro_update_age_by_birthday
@Param1 varchar(50), @Pa2 int
AS
BEGIN
update cchild set age=@Pa2 where birthday=@Param1
END
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_update_age_by_birthday '1998-02-06',16 执行。
四,pro_delete_by_name
CREATE PROCEDURE pro_delete_by_name
@Param1 varchar(50)
AS
delete from cchild where cusername=@Param1
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_delete_by_name 'Zhao' 执行。
五,pro_select_by_birthday_and_age
create PROCEDURE pro_select_by_birthday_and_age
@Param1 varchar(50),
@Param2 int
AS
select * from cchild where birthday=@Param1 and age=@Param2
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_select_by_birthday_and_age '1998-02-06',16 执行
六,pro_select_back_output
CREATE PROCEDURE pro_select_back_output
@Param1 varchar(50), @Param2 int, @Param3 int output
AS
BEGIN
select * from cchild where birthday=@Param1 and age=@Param2 select @Param3=@Param3+2
END
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_select_back_output '1998-02-06',16,33 执行
七,pro_select_back_output22
create PROCEDURE pro_select_back_output22
@Param1 varchar(50), @Param2 int, @Param3 int output
AS
BEGIN
select * from cchild where birthday=@Param1 and age=@Param2
select @Param3=632
END
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_select_back_output22 '1998-02-06',16,33 执行
八,pro_select_back
CREATE PROCEDURE pro_select_back
@Param1 varchar(50), @Param2 int, @Param3 int
AS
BEGIN
select * from cchild where birthday=@Param1 and age=@Param2
return @Param3+2
END
GO
在sql server2008执行这个存储过程的方法:exec dbo.pro_select_back '1998-02-06',16,33 执行
浙公网安备 33010602011771号