存储过程中表给变量赋值

[复制链接]
查看11 | 回复4 | 2006-9-1 20:36:36 | 显示全部楼层 |阅读模式
现在的表结构是这样的
ID
ReferID
ReferCount
1
0
2
2
1
NULL
3
2
NULL
4
3
1
然后声明四个变量
declare@t1 int
declare@t2 int
declare@t3 int
declare@t4 int
然后使用四条记录中的ReferCount为值四个变量赋值
问题是能不能使用一条sql语句完成,用case行不行的
请高手们指教
回复

使用道具 举报

千问 | 2006-9-1 20:36:36 | 显示全部楼层
case语句在SQL中应归为表达式类,而并非流程控制语句,个人觉得达不到你要的效果。
回复

使用道具 举报

千问 | 2006-9-1 20:36:36 | 显示全部楼层
可以使用CASE
楼主可以参考一下下面的方法:
CREATE TABLE #Temp(ID int,ReferID int,ReferCount int)
INSERT INTO #Temp
SELECT 1, 0, 2 UNION ALL
SELECT 2, 1, NULL UNION ALL
SELECT 3, 2, NULL UNION ALL
SELECT 4, 3, 1
DECLARE @t1 int
DECLARE @t2 int
DECLARE @t3 int
DECLARE @t4 int
--根据ID的唯一性来查询
SELECT @t1=(CASE ID WHEN 1 THEN ReferCount ELSE @t1 END)

,@t2=(CASE ID WHEN 2 THEN ReferCount ELSE @t2 END)

,@t3=(CASE ID WHEN 3 THEN ReferCount ELSE @t3 END)

,@t4=(CASE ID WHEN 4 THEN ReferCount ELSE @t4 END)

FROM #Temp
SELECT @t1 AS '@t1',@t2 AS '@t2',@t3 AS '@t3',@t4 AS '@t4'
DROP TABLE #Temp
复制代码
回复

使用道具 举报

千问 | 2006-9-1 20:36:36 | 显示全部楼层
最初由 wghao 发布
[B]可以使用CASE
楼主可以参考一下下面的方法:
CREATE TABLE #Temp(ID int,ReferID int,ReferCount int)
INSERT INTO #Temp
SELECT 1, 0, 2 UNION ALL
SELECT 2, 1, NULL UNION ALL
SELECT 3, 2, NULL UNION ALL
SELECT 4, 3, 1
DECLARE @t1 int
DECLARE @t2 int
DECLARE @t3 int
DECLARE @t4 int
--根据ID的唯一性来查询
SELECT @t1=(CASE ID WHEN 1 THEN ReferCount ELSE @t1 END)

,@t2=(CASE ID WHEN 2 THEN ReferCount ELSE @t2 END)

,@t3=(CASE ID WHEN 3 THEN ReferCount ELSE @t3 END)

,@t4=(CASE ID WHEN 4 THEN ReferCount ELSE @t4 END)

FROM #Temp
SELECT @t1 AS '@t1',@t2 AS '@t2',@t3 AS '@t3',@t4 AS '@t4'
DROP TABLE #Temp
复制代码[/B]






回复

使用道具 举报

千问 | 2006-9-1 20:36:36 | 显示全部楼层
试了二楼那位朋友的方法,还不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行