如何使用游标基于列名检索记录

时间:2011-09-21 05:08:02

标签: sql-server-2005

我是rekha,我正在使用数据库。我过去2个月只是一个新鲜的,只有我在sql server上工作。

我有一个查询,我有2个表。例如,businesstype表包含id,businesstype和基于位置的位置我将检索数据。这很好。第二个表就像员工,列是id,name和businesstype .so我的问题是针对每个businesstype我将从employee表中获取记录,如下所示:

1,Sathish所在,softwar 4,普什帕,软件 2,拉梅什,电子 4,RAJESH,电子

我也通过使用连接,运算符和子查询来解决这个问题。但是我需要使用游标来解决这个问题。

我的写作方式如下:

1)SELECT ID,Name,BusinessType FROM Employee                   在哪里使用BusinessType(从员工中选择BusinessType) 按BusinessType desc排序

2)选择ID,Name,BusinessType 来自Employee(从Employee中选择BusinessType)

3)从@BusinessTypeTemp

中选择@Location = Location

选择ID       ,业务类型       ,地点        来自BusinessType,其中Location = @ Location

DECLARE @TempEmployeeInfo varchar(500)
DECLARE @pos        int,
         @nextpos    int,
        @nextRecpos int, 
        @valuelen   int

/ *创建临时表以插入地址类型* /

CREATE TABLE  #EmployeeInfo (BusinessType nvarchar(80) )
SELECT  @TempEmployeeInfo =   BusinessType FROM @EmployeeTemp

/ *检查分隔符的代码是','并保存到临时表* /

SELECT @pos = 0, @nextpos = 1


WHILE @nextpos > 0
BEGIN


  SELECT @nextpos = charindex(',', @TempEmployeeInfo, @pos + 1)
  SELECT @valuelen = CASE WHEN @nextpos > 0
                          THEN @nextpos
                          ELSE len(@TempEmployeeInfo) + 1
                     END - @pos - 1
INSERT #EmployeeInfo(BusinessType)  VALUES (convert(nvarchar, substring(@TempEmployeeInfo, @pos+1, @valuelen)))
  SELECT @pos = @nextpos
END




    SELECT @Count = count(BusinessType) from Employee WHERE BusinessType IN (SELECT BusinessType FROM #EmployeeInfo)
        PRINT @count


    IF(@Count<>0)
        BEGIN


            select ID,Name,BusinessType from Employee

            WHERE BusinessType IN (SELECT BusinessType FROM #EmployeeInfo)
            order by BusinessType desc


       END
    ELSE
         BEGIN
         SELECT 0 as ReturnID
         END

但他们不想要这个,他们只想使用游标来获得结果。而且我想在一个SP中显示两个表结果。

所以请任何人帮助我。请发送紧急回复,因为今天是我解决此问题的最后一天。

雷卡

0 个答案:

没有答案