数据库存储过程问题
C# code
ALTER PROCEDURE dbo.GetAllCounts
@DateDeal varchar(50),
@Flight varchar(10),
@WorkeTime datetime,
@ReadValues int output
AS
select @ReadValues=Count(*) from [@DateDeal] where 班次=[@Flight] and 工作时间=[@WorkeTime]
对象名 '@DateDeal' 无效。
没有行受影响。
(返回 0 行)
@ReadValues = 0
@RETURN_VALUE =
完成 [dbo].[GetAllCounts] 运行。
------解决方案--------------------declare @sqls nvarchar(4000)
set @sqls='select @a=count(*) from [' + @DateDeal + '] WHERE 班次='+@Flight +'and 工作时间='''+@WorkeTime+''''
exec sp_executesql @sqls,N'@a int output',@ReadValues
------解决方案--------------------你这里要用动态SQL语句,
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格
请参照:
http://www.leftworld.net/wenzhang/show/2151.html