我已经完成了一些网络搜索,但无法找到任何可以解决我的1 x数据库表和2 x存储过程的问题。我是这个主题的新手,所以任何帮助都很有用。
我有2个存储过程。其中一个查询来自另一个数据库(GetRawDataFromIHistorian)和另一个(GasNominationsRawData_Insert)的原始数据应该在执行时将这些数据INSERT到表中。
我的第一个SP工作,但我似乎无法将其插入我名为GasRawData的表中。在执行插入SP时显示的消息是......
“Msg 201,Level 16,State 4,Procedure GasNominationsRawData_Insert,Line 0 过程或函数'GasNominationsRawData_Insert'需要参数'@timestamp',这是未提供的。“
我的第一个SP(GetRawDataFromIHistorian)看起来像这样......
ALTER PROCEDURE [dbo].[GetRawDataFromIHistorian]
AS
SET NOCOUNT ON;
SELECT [timestamp], Left(Right(TagName,Len(TagName)-5),Len(TagName)-10) AS TagName,
CONVERT(decimal(10, 2), ROUND(value, 2)) AS Value
FROM
OPENQUERY(IHISTORIAN,'
SELECT timestamp, tagname, value
FROM ihRawData
WHERE tagname = "UMIS.99FC9051.F_CV"
OR tagname = "UMIS.99F851C.F_CV"
AND timestamp BETWEEN ''2011-10-18 05:00:00.000'' AND ''2011-10-19 06:00:00.000''
AND samplingmode =Calculated
AND calculationmode =Average
AND intervalmilliseconds =1h
ORDER BY tagname, timestamp
')
我的INSERT SP(GasNominationsRawData_Insert)如下......
ALTER PROCEDURE [dbo].[GasNominationsRawData_Insert]
@timestamp DATETIME,
@TagName NVARCHAR(50),
@Value REAL
AS
INSERT INTO dbo.GasRawData (timestamp,
TagName,
Value)
VALUES (@timestamp,
@TagName,
@Value);
SELECT SCOPE_IDENTITY() AS NewRecordID;
我只是想从GetRawDataFromIHistorian查询中获取结果,并使用GasNominationsRawData_Insert来填充GasRawData表。
我的GasRawData表中有4列......
RecordID (PK, int, not null)
timestamp (datetime, not null)
tagname (nvarchar(50), not null)
value (real, not null)
答案 0 :(得分:0)
问题似乎是在调用GasNominationsRawData_Insert过程时,因为您没有传递预期的参数。你能告诉我们你是如何执行该存储过程的吗?此外,您应该只有一个存储过程,请尝试:
CREATE PROCEDURE dbo.GasNominationsRawData_Insert
AS
SET NOCOUNT ON;
INSERT INTO dbo.GasRawData (timestamp,TagName,Value)
SELECT [timestamp], Left(Right(TagName,Len(TagName)-5),Len(TagName)-10) AS TagName,
CONVERT(decimal(10, 2), ROUND(value, 2)) AS Value
FROM
OPENQUERY(IHISTORIAN,'
SELECT timestamp, tagname, value
FROM ihRawData
WHERE tagname = "UMIS.99FC9051.F_CV"
OR tagname = "UMIS.99F851C.F_CV"
AND timestamp BETWEEN ''2011-10-18 05:00:00.000'' AND ''2011-10-19 06:00:00.000''
AND samplingmode =Calculated
AND calculationmode =Average
AND intervalmilliseconds =1h
ORDER BY tagname, timestamp
')
答案 1 :(得分:0)
此错误消息表明您没有将值传递给所需的@timestamp参数
Msg 201,Level 16,State 4,Procedure GasNominationsRawData_Insert,Line 0过程或函数'GasNominationsRawData_Insert'需要参数'@timestamp',这是未提供的。
解决方案是传入参数或通过添加默认值使其成为可选项。
如果您可以将代码发布到调用程序的位置,我们可以提供更多帮助