SQL使用视图

//存储过程,为以后使用而保存的一条或多条SQL语句
1.把处理封装在一个易用单元,简化复杂操作
2.减少步骤,防止错误,保证了数据的一致性
3.简化对变动的管理,只需要更改存储过程的代码,限制对基础数据的访问,更安全
4.存储过程以编译过形式存储,性能更高
5.有些特性和SQL元素只能用在单个请求中
//执行存储过程
EXECUTE AddNewProduct('JTS01',
				   'Tower',
				   6.49,
				   'Red and blue');
//创建存储过程,Oracle版本
CREATE PROCEDURE MailingListCount(
    ListCount OUT INTEGER//OUT是从存储过程返回值,IN是传递值给存储过程,INOUT两者都有
)
IS
v_rows INTEGER
BEGIN//存储过程的代码在BEGIN和END语句中
    SELECT COUNT(*) INTO v_rows
    FROM Customers
    WHERE NOT cust_email IS NULL;
    ListCount :=v_rows//用检索出的行数设置输出参数
END;
//调用存储过程
var ReturnValue NUMBER//声明变量保存返回值
EXEC MailingListCount(:ReturnValue);
SELECT ReturnValue//显示返回值
//SQL Server版本
CREATE PROCEDURE MailingListCount
AS
DECLARE @cnt INTEGER//声明变量,@开头是局部变量
SELECT @cnt=Count(*)//给变量赋值
FROM Customers
WHERE NOT cust_email IS NULL 
RETURN @cnt//返回调用程序
//调用
DECLARE @ReturnValue INT
EXECUTE @ReturnValue=MailingListCount
SELECT @ReturnValue
//用存储过程插入新订单
CREATE PROCEDURE NewOrder @cust_id CHAR(10)
AS
--为订单号声明一个变量
DECLARE @order_num INTEGER
--获取当前最大订单号
SELECT @order_num=MAX(order_num)
FROM Orders
--决定下一个订单号
SELECT @order_num=@order_num+1
--插入新订单
INSERT INTO Orders(order_num,order_date,cust_id)
VALUES(@order_num,GETDATE( ),@cust_id)
--返回订单号
RETURN @order_num
//另一个版本
CREATE PROCEDURE NewOrder @cust_id(10)//只有一个传入参数
AS
--插入新订单
INSERT INTO Orders(cust_id)
VALUES(@cust_id)//日期和订单号自动生成
--返回订单号
SELECT order_num=@@IDENTITY//从全局变量中得到自动生成的订单号









    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值