在公司管理数据库中创建存储过程product_order ,要求实现如下功能:根据产品名称,查询该产品的订货情况,如果该产品没有订货,则显示“此产品目前没有订单!”,否则显示订购该产品的订购明细表,包括产品名、数量、单价、库存量、订货日期。具体表如下:
产品信息表(product) 产品ID,产品名,单价,库存量
订单信息表(p_order) 订单ID,产品ID,数量,客户ID,订货日期
客户信息表(customer) 客户ID ,公司名称,联系人姓名,联系方式,地址,邮编
create proc product_order
@pname varchar(8)
as
@pname1 varchar(8)
declare @pid varchar(8)
declare @poid varchar(8)
declare @pq varchar(8)
declare @kcl varchar(8)
declare @pprice money
declare @podate datetime
if exists (select @pname=产品名,@poid=p_order.订单ID,@pid=p_order.产品ID,@pq=数量,@kcl=库存量,@pprice=单价,@podate=订货日期
from p_order join customer on p_order.客户ID=customer.客户ID
join product on p_order.产品ID=product.产品ID
where @pname1=产品名)
print @pname,@pq,@kcl
print @pprice
print @podate
else
print '此公司没有订单!'
这是我写的代码(有错误) 帮忙分析一下 并求正解
错误:exlsts 后面应该是个结果集!
也许你想一边查询,一边取值,但是"向变量赋值的 SELECt 语句不能与数据检索操作结合使用。"
正解: (有些东西自己改哈!,自己多想哈,别遇到问题就问人)
use Stroe
go
if exists(select * from sysobjects where name='product_order')
drop proc product_order
go
create proc product_order
@pname nvarchar(50)
as
-------产品名称--------
declare @name nvarchar(50)
---- 产品ID ----
declare @pid int
-------订单ID----------
declare @poid int
----------数量----------------
declare @pq int
---------库存-------------
declare @kcl int
------价格-----
declare @pprice money
--------日期----------------
declare @podate datetime
-------判断有没有订单!-----------
if exists(select p.p_name from product p right join p_order pr on
p.PID=pr.PID left join customer c on
c.CID=pr.r_CID where p.p_name=@pname)
begin
---------这里取数据!---------
select @name= p.p_name,@pid=p.PID ,
@poid=pr.RID ,@pq= pr.r_count ,
@kcl=p.p_Num ,@pprice=p.p_price ,
@podate=pr.r_date
from product p right join p_order pr on
p.PID=pr.PID left join customer c on
c.CID=pr.r_CID where p.p_name=@pname
print '这里你自己弄'
print '这里你自己弄'
end
else
print '该产品没有订单'
go
exec product_order '可口可乐'
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息