有以下的存储过程.当我用SQL调用的时候.就在第一句读取的时候出错了..为什么呢?//////////////////////////SQL的存储过程.///////////
CREATE PROCEDURE spRoomFullRate
@StartDate smalldatetime,
@EndDate smalldatetime
AS
SELECT b.rName,a.rTypeNum,b.rFullDays,
(CAST(
(
(CAST(b.rFullDays as decimal(5,2)))/
(CAST(a.rTypeNum as decimal(5,2)))/
(CAST(DATEDIFF(day,@StartDate,@EndDate)AS decimal(5,2)))*100
)
AS decimal(5,2)
)
)AS rFullRate
FROM
(   SELECT COUNT(tblRoom.rNum) AS rTypeNum,tblRoom.rType
    FROM tblRoom
    GROUP BY tblRoom.rType)a,
(   SELECT tblRoomType.rName,tblRoomType.rType,
(SUM(DATEDIFF(day,tblClient.cInTime,tblClient.cOutTime)))AS rFullDays
    FROM tblClient,tblRoom,tblRoomType
    WHERE (tblClient.cInTime between @StartDate and @EndDate)AND
(tblClient.rNum=tblRoom.rNum)AND
(tblRoom.rType=tblRoomType.rType)
    GROUP BY rName,tblRoomType.rType
)b
WHERE a.rType=b.rType
GO//////////////////////////SQL的存储过程.///////////
//////////////////////////C#的语句///////////
ListView1.Columns.Add("客房类型",90,HorizontalAlignment.Center);
ListView1.Columns.Add("该类客房数",140,HorizontalAlignment.Center);
ListView1.Columns.Add("入住情况(人.天)",180,HorizontalAlignment.Center);
ListView1.Columns.Add("入住率(%)",140,HorizontalAlignment.Center);
while(dr.Read())
{
ListViewItem item = new ListViewItem(dr["rName"].ToString(),0);//这里就开始错了
item.SubItems.Add(dr["rTypeNum"].ToString());
item.SubItems.Add(dr["rFullDays"].ToString());
item.SubItems.Add(dr["rFullRate"].ToString());
this.ListView1.Items.AddRange(new ListViewItem[]{item});

//////////////////////////C#的语句///////////

解决方案 »

  1.   

    生成存储过程之前,需要判断下,如果已经存在,就要删除后再生成。if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[spRoomFullRate]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[spRoomFullRate]
    GO
      

  2.   

    但我的存储过程是在SQL里面的啊.
    我只是用C#来调用他的存储过程啊.
      

  3.   

    ListViewItem   item   =   new   ListViewItem(dr["rName"].ToString(),0);//这里就开始错了
    这里错误