存储过程总是在sql server中返回一行结果

时间:2013-10-29 11:05:58

标签: sql-server stored-procedures

我的sql server中有一个这样的表:

TransactID    Dtid     Sid

1086          5        4
1086          7         8
1086          4         3

我想从相应的表中获取相应的Dtid和Sid名称。所以我创建了这样的存储过程:

ALTER procedure [dbo].[PDTDamageFetch]
@Carid NVARCHAR(50)

AS

BEGIN
SET NOCOUNT ON
declare @transid integer,@dtid integer,@sid integer,@Damage nvarchar(100),@side nvarchar(100)
select @transid= t.transactID from Transaction_tbl t where t.TBarcode=@Carid
select @dtid= tr.Dtid from TransactDamageAssign_tbl tr where tr.transactID=@transid
select @sid= tr.sid  from TransactDamageAssign_tbl tr where tr.transactID=@transid
select @Damage=dt.DtName  from DamageType_tbl dt where dt.Dtid=@dtid
select @side= ds.SName from DamageSide_tbl ds where ds.Sid=@sid
select @Damage,@side
end

然后我执行我的存储过程传递相应的carid..transactID特定的汽车id是1086但存储过程总是显示一行数据..我可以复制我的问题..我

expected out put at this stage is:

伤害方

scrtch    front
broken      Back
damged       side

2 个答案:

答案 0 :(得分:1)

尝试此查询而不是您的查询。您只是为变量分配一个值,这就是为什么您只得到一行

SELECT * FROM Transaction_tbl  t
INNER JOIN TransactDamageAssign_tbl tr ON tr.transactID = t.transactID
INNER JOIN DamageType_tbl dt ON dt.Dtid = tr.Dtid
INNER JOIN DamageSide_tbl ds ON ds.Sid = tr.sid
WHERE t.TBarcode=@Carid

答案 1 :(得分:0)

我认为您应该尝试使用表变量或临时表来列出所有记录。

您尝试的方式将始终返回最后一行匹配条件。