大家好,小弟碰到一个比较难解决的问题,
我想用 T-SQL 语句 来实现 读取一个表的某行记录的某个字段值
然后付给变量
我写的是 select @a=[字段1] from Table where ...
但是 如果查出来 n 条记录的话
@a 的值只是最后一条记录的值
我怎么样都获得出来,然后付给不同的变量??~
哪位高手帮帮忙~~~
万分感谢~~~
我想用 T-SQL 语句 来实现 读取一个表的某行记录的某个字段值
然后付给变量
我写的是 select @a=[字段1] from Table where ...
但是 如果查出来 n 条记录的话
@a 的值只是最后一条记录的值
我怎么样都获得出来,然后付给不同的变量??~
哪位高手帮帮忙~~~
万分感谢~~~
select @a= @a + [字段1] + ';' from Table where ...返回去有多个用;号隔开的数据
你在前台去处理好了
然后用While循环读取前台处理方法同:hb_gx(高升)
这位朋友的方法挺好,
但是我觉得有个问题,
如果数据量很大的话就不行了~谢谢上面两个朋友“游标”的点提~~juntor() 这位朋友,我不懂怎么在 T-SQL 里怎么使用 While循环将记录一一取出~
select.........你要查询的字段 from 要查找的表
open 游标名称
fetch next from 游标名称 into 变量列表-- 和select 里面的列数对应
while @@fetch_status =0
begin
.......
--你要处理的代码
fetch next from 游标名称 into 变量列表-- 和select 里面的列数对应
end
close 游标名称
deallocate 游标名称
打开该游标时所生成的结果集包括 pubs 数据库的 authors 表中的所有行和列。可以更新该游标,对该游标所做的所有更新和删除均在提取中表现出来。因为没指定 SCROLL 选项,FETCH NEXT 是唯一可用的提取选项。DECLARE authors_cursor CURSOR
FOR SELECT * FROM authors
OPEN authors_cursor
FETCH NEXT FROM authors_cursorB. 使用嵌套游标生成报表输出
下例显示如何嵌套游标以生成复杂的报表。为每个作者声明内部游标。SET NOCOUNT ONDECLARE @au_id varchar(11), @au_fname varchar(20), @au_lname varchar(40),
@message varchar(80), @title varchar(80)PRINT "-------- Utah Authors report --------"DECLARE authors_cursor CURSOR FOR
SELECT au_id, au_fname, au_lname
FROM authors
WHERE state = "UT"
ORDER BY au_idOPEN authors_cursorFETCH NEXT FROM authors_cursor
INTO @au_id, @au_fname, @au_lnameWHILE @@FETCH_STATUS = 0
BEGIN
PRINT " "
SELECT @message = "----- Books by Author: " +
@au_fname + " " + @au_lname PRINT @message -- Declare an inner cursor based
-- on au_id from the outer cursor. DECLARE titles_cursor CURSOR FOR
SELECT t.title
FROM titleauthor ta, titles t
WHERE ta.title_id = t.title_id AND
ta.au_id = @au_id -- Variable value from the outer cursor OPEN titles_cursor
FETCH NEXT FROM titles_cursor INTO @title IF @@FETCH_STATUS <> 0
PRINT " <<No Books>>" WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @message = " " + @title
PRINT @message
FETCH NEXT FROM titles_cursor INTO @title
END CLOSE titles_cursor
DEALLOCATE titles_cursor
-- Get the next author.
FETCH NEXT FROM authors_cursor
INTO @au_id, @au_fname, @au_lname
ENDCLOSE authors_cursor
DEALLOCATE authors_cursor
GO-------- Utah Authors report --------
----- Books by Author: Anne Ringer
The Gourmet Microwave
Is Anger the Enemy?
----- Books by Author: Albert Ringer
Is Anger the Enemy?
Life Without Fear
根据楼主所说的要求.我的理解是还是不要用游标
如果数据不会太多,应该用 hb_gx(高升)
所提到的方法.把@a定义成varchar(8000),可以存8000个字符呢.如果实在不够长的话.
那你就直接写 select 列中 from 表名 where 条件
在数据库中把符合条件的记录全部选出来.到程序中获取整个表集.再进行你要的处理..你在要求中写到"赋给不同的变量".
其实是有问题的.你不知道会有多少结果
也就不知道要定义多少个变量.
从且也就不好接收了.呵呵,不知道我有不有理解错楼主的意思.
(select 列名 from 表名 where 条件)然后到前台循环读取返回的结果集作处理就行了.呵呵
------------------------------------------------------------
我觉得还是用游标吧,
select @sss= @sss+col from ttt
这种可能由于记录数的数量多导致@sss变量长度不够,通用性不够好。
(少量数据的列转行除外)