@columnname
データベース内のタイプがであるストアドプロシージャを1つ使用してfloat
おり、パラメータも宣言していますfloat
。
列名をfloatとして渡すと、エラーが発生します。
メッセージ8114、データ型nvarcharをfloatに変換中にエラーが発生しました。
これは私のテストクエリです
Declare @column float
set @column = 'S_E1'
select Avg(@column) from TBL_SENSORS
そして、パラメータタイプをvarchar
thenに変更すると、次のエラーが発生します。
メッセージ8117、オペランドデータ型varcharはavg演算子に対して無効です。
Declare @column varchar
set @column = 'S_E1'
select Avg(@column) from TBL_SENSORS
どうすればこれを解決できますか?
アップデート :
これは私のストアドプロシージャです:
ALTER PROCEDURE [dbo].[getAvgColumn]
@ColumnName float,
@StartDate DateTime,
@EndDate DateTime,
@Start int,
@End int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @Skip int = 0
declare @Take int = 4
declare @count int = 0
set @count = (select count(@ColumnName) from TBL_SENSORS Where RECORD_TIMESTAMP Between @StartDate and @EndDate And ( @ColumnName Between @Start And @End ))
while(@Skip < @count)
Begin
select avg(@ColumnName)
from
(select
@ColumnName as cc,
row_number() over (order by RECORD_TIMESTAMP) as rn
from
TBL_SENSORS
Where
RECORD_TIMESTAMP Between @StartDate and @EndDate
And (@ColumnName Between @Start And @End)
) T
where
rn > @Skip and
rn <= @Skip + @Take
set @Skip = @Skip + @Take
end
END