列出存储过程的SQL语句如关联二个表和关联三个表

[SQLSERVER]列出存储过程的SQL语句如关联二个表和关联三个表。更新数据、更新二个表数据、更新三个表数据。以及索引的作用实例子。自己回答的加100分,COPY的没... [SQL SERVER ]列出存储过程的SQL语句如关联二个表和关联三个表。更新数据、更新二个表数据、更新三个表数据。以及
索引的作用实例子。自己回答的加100分,COPY的没分
展开
 我来答
WHITE_WIN
2008-05-22 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1929万
展开全部
根据存储过程更新三个表ABC,DEF,EFG:
CREATE PROCEDURE Abc_Update
@W_AbcCode varchar(1),
@AbcWorthRate integer,
@AbcKindRate integer
AS
update Abc set

AbcKindRate=@AbcKindRate,
AbcWorthRate=@AbcWorthRate

where AbcCode=@W_AbcCode

update DEF set

DEFKindRate=@AbcKindRate,
DEFWorthRate=@ABCWorthRate

where DEFCode=@W_AbcCode

update EFG set

EFGKindRate=@AbcKindRate,
EFGWorthRate=@AbcWorthRate

where EFGCode=@W_AbcCode

--通过主键ABCCODE,DEFCODE,EFGCODE关联三个表并同时显示三个表的数据:
SELECT * FROM ABC,DEF,EFG WHERE ABCCODE=DEFCODE AND DEFCODE=EFGCODE
GO
--使用举例:将ABC,DEF,EFG三个表CODE字段为A001的记录另外两个字段改为2和3.然后在界面中显示关联后的三个表的数据。
EXEC Abc_Update 'A001',2,3
水叹花
2008-05-20 · TA获得超过375个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:280万
展开全部
--这是我做的财务系统里的一个例子
create procedure balanceUpdate
(
@month datetime,--这个时间是要计算的月份如4月
@site int ,
@cashnew money output,--分别是计算的结果
@chequenew money output,
@outernew money output
)
as
declare @cashold money--分别是计算的月份的前月3月余额表数据
declare @chequeold money
declare @outerold money
declare @cashthis money--日记统计的本月发生4月的数据
declare @chequethis money
declare @outerthis money
--先查余额表输入日期的前一个月的数据
select @cashold=[bal_cash],@chequeold=[bal_cheque],@outerold=[bal_outer]
from [finance_balance] where datediff(mm,@month,[bal_month])=-1 and [finance_balance].bal_site=@site;
print @cashold

--再查输入日期当月的所有发生累计(如果添入日期为2008-4-3 ,那么4-3以后的数据也被统计进来,就是说统计只看月份)
select @cashthis=sum(fin_item_sum) from [finance_daily_accounting]
where [fin_class]=1 and [finance_daily_accounting].fin_site=@site and datediff(mm,@month,fin_item_date)=0 ;
select @chequethis=sum(fin_item_sum) from [finance_daily_accounting]
where [fin_class]=2 and [finance_daily_accounting].fin_site=@site and datediff(mm,@month,fin_item_date)=0 ;
select @outerthis=sum(fin_item_sum) from [finance_daily_accounting]
where [fin_class]=3 and [finance_daily_accounting].fin_site=@site and datediff(mm,@month,fin_item_date)=0 ;
--@cashol,@chequeold,@outerold如果为null 那么结果为null 就是说输入日期的前月必须有余额数据 查询才有结果
select @cashnew=@cashold+isnull(@cashthis,0)
select @chequenew=@chequeold+isnull(@chequethis,0)
select @outernew=@outerold+isnull(@outerthis,0)
go
--测试
declare @cash money
declare @cheque money
declare @outer money
exec balanceUpdate '2008-4-1',1,@cash output,@cheque output,@outer output
select @cash as 现金,@cheque as 帐面,@outer as 帐外
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
妙雨飞仙
2008-05-24 · TA获得超过430个赞
知道小有建树答主
回答量:325
采纳率:0%
帮助的人:245万
展开全部
selcet
from (多加几个表名字应该可以了)
update
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式