SQLServer存储过程简单学习

刚接触存储过程的小伙伴可能有点懵,个人是把它当作Java中的方法(或C++中的函数)来理解;
一个存储过程可以封装多个SQL语句和控制语句,实现较为复杂的功能;
但在Java中只需要“调用”它的存储过程名,并传入相应参数即可;

以下以向购物车表中添加一行新数据为例
1、购物车表结构:
在这里插入图片描述
2、存储过程
可编程性–>存储过程–>右击–>添加存储过程

USE [SYMall]  //use [数据库名]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE AddCart    //新建  存储过程  名称
@cid nchar(10),            //参数名
@gid int,
@gnum int,
@msg nchar(7) output      //输出参数+output
AS
	if exists(select * from Goods where id=@gid)
BEGIN
	SET NOCOUNT ON;
	if (select storage from Goods where id=@gid)<>0
		declare @name nchar(10),@price float,@type nchar(10)
		select @name=name,@price=price,@type=type from Goods where id=@gid
		if not exists(select * from Cart where gid=@gid)
			insert into Cart(cid,gid,gname,gprice,gtype,gnum) values(@cid,@gid,@name,@price,@type,@gnum)
		else
			update Cart set gnum=gnum+@gnum where cid=@cid and gid=@gid
		set @msg='success'
END
	else 
		set @msg='unexist'

3、Java调用

public class AddCartDao extends ConnectQSL{
	
	public String addCart(String id,String gid,String num){
		ConnectionSql();
		String result=null;
		try {
		   String sql="{call AddCart(?,?,?,?)}";  //格式"{call 存储过程名(参数列表)}"
		   CallableStatement stat=conn.prepareCall(sql);
		    stat.setString(1, id);  //传入参数
			stat.setString(2, gid);
			stat.setString(3, num);
			stat.registerOutParameter(4, java.sql.Types.NCHAR);    //输出参数
			stat.execute();
			result=stat.getString(4);		
			System.out.println("result"+result);
		} catch (SQLException e) {
			e.printStackTrace();
		}
			if(result.equals("unexist")){
				return "unexist";
			}
		
		return "success";
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值