更新表-sql 如何在建立一个存储过程时更新两张表的数据?

问题描述

sql 如何在建立一个存储过程时更新两张表的数据?

create proc proc2
(
@OrderID int,
@BookID varchar(20),--更新 orderInfo quantity;更新 orderSheet payment
@BookStock int
)
as
update orderSheet
set payment = b.newpay
FROM orderInfo,orderSheet,(select (payment + price * @BookStock) newpay
FROM orderSheet,book,(update orderInfo
SET quantity = a.qq
FROM (select (o1.quantity + @BookStock) qq
from orderInfo o1
WHERE o1.orderid = @OrderID
AND o1.bookid = @BookID) a) aa
WHERE orderSheet.oid = aa.orderid
AND aa.bookid = book.bid) b
where orderInfo.orderid = @OrderID
AND orderInfo.bookid = @BookID
AND orderSheet.oid = orderInfo.orderid

求问:这样错在哪里?正确的又应该怎样做?

解决方案

你这个嵌套太多了吧,为什么不分步骤来做呢

解决方案二:

create proc proc2
(
@OrderID int,
@BookID varchar(20),--更新 orderInfo quantity;更新 orderSheet payment
@BookStock int
)
as
begin

update orderInfo
SET quantity =(quantity + @BookStock)
WHERE orderid = @OrderID
AND bookid = @BookID

update orderSheet
set payment = orderSheet.payment+orderInfo.price*orderInfo.quantity
FROM orderInfo
where orderInfo.orderid = @OrderID
AND orderInfo.bookid = @BookID
AND orderSheet.oid = orderInfo.orderid

end
go

时间: 2024-09-08 09:03:06

更新表-sql 如何在建立一个存储过程时更新两张表的数据?的相关文章

100高分!如何让一个DataSet中生成两张表并对两个表进行计算!在线等!

问题描述 比如我用两个SQL语句从数据库中得到两个表的结果,如下:stringSQL_1="select*fromtable1whereid='abc'";stringSQL_2="select*fromtable2wherexuehao='2008'"; 得到以上两个表之后,我想通过一个DataSet装载这两个表:dt1和dt2:如果两个表中的其它数据不一样,但是有个相同的主键,我如何能够通过程序来对这两个表进行计算?计算好了之后再在一个DataGridView中

『求助』存储过程执行后有两张表,为什么while后只有第一张表显示

问题描述 解决方案 解决方案二:遮挡的太多!应该是缺少移动记录集指针的语句解决方案三:你可以看看人家.net的ExcuteReader的文档和任何介绍,你在哪里看到过支持返回两张表的,请贴出来吧.解决方案四:引用1楼xuzuning的回复: 遮挡的太多!应该是缺少移动记录集指针的语句 这是我写的两个方法,一个用dataset,一个用sqldatareader,都是只能返回第一张表的SqlDataAdapterda=newSqlDataAdapter();da.SelectCommand=newS

radgridview中关联了两张表,如何将他们更新到数据库?

问题描述 radgridview中关联了两张表,如何将他们更新到数据库?radgridview中的列值来源于两张表,怎么分别更新到数据库? 解决方案 解决方案二:没用过radgridview,更新数据库还和控件有关么?解决方案三:https://msdn.microsoft.com/zh-cn/library/system.data.common.dataadapter.update(v=vs.110).aspx

mysql关于两张表查询的问题

问题描述 mysql关于两张表查询的问题 我现在有两张表 iislog ips_global 想根据iislog表查询出来的IP地址,得出对应的归属地,请问这语句该怎么写啊? 解决方案 如果没有关联,可以这么写 select g.ip_location, g.ip_isp from ips_global g left join iislog l on l.id=1 where g.ip_start<=l.client_ip and g.ip_end >= l.client_ip id是主键,可

dataGridView中直接显示两张表

问题描述 想实现再一个dataGridView中显示两张表,不是表的拼接成一张表,那样会导致字段太多,而需要人去拖动才可以看见,直接是两张表上下显示,不知道可以实现不?? 解决方案 解决方案二:可以,用数据集啊dataset解决方案三:应该只有拼接了.但是你可以上下手动拼接除此之外你可以考虑用两个dataGridView

SQLSERVER中如何快速比较两张表的不一样

原文:SQLSERVER中如何快速比较两张表的不一样 SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~   一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从数据库层面来解决此类问题的方法 第一步当然就是检查记录数是否一致,否则不用想其他方法了~这里我们用两张表t1_old,t1_new来演示 方法介绍   方法一:老老实实看表结构和表记录数,弊端是根本看不到两张表的数据是否一致,只是看到表结构和

写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式

问题描述 写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式 求助,写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式.是否可以写在一个存储过程中.谢谢大家啦.遇到难题啦. update语句已经写好了,就是不知道如何整合成存储过程. 解决方案 可以的,一个存储过程可以执行多个update语句

sql语句-如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表。

问题描述 如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表. 有A.B.C三张表如下, 表 A 表B 学生ID(主键) 学生名称 课程ID(主键)| 课程名称 表 C 学生ID 课程ID (联合主键) 那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽. 解决方案 你可以定义2个变量,分别从表A表B用名称查询到ID.在表C的新增语句中使用这2个变量. 不过你这

求教这两张表有什么联系写一个sql语句呀!

问题描述 求教这两张表有什么联系写一个sql语句呀! ![ 解决方案 一个sql语句 怎么写比较好在同一个sql语句中写不同条件的count数量,和查询半年的数据自学数据库之一个自己写的SQL语句 解决方案二: 库存管理里面的商品product_id 和商品管理里的no,是同一个值么,如果不是的话,那商品管理表里面还有一部分看不到的字段呢? 解决方案三: 解决方案四: 两张表的第一个ID字段是不是同一个?