2011-10-20 5 views
0

私はいくつかのWeb検索を行ってきましたが、実際には1 xデータベーステーブルと2 xストアドプロシージャで問題を修正できるものは見つかりませんでした。私はこの主題の初心者ですので、どんな助けも大変です。SQL Server:ストアドプロシージャ(初心者)

私は2つのストアドプロシージャを持っています。これらのデータの1つは、別のデータベース(GetRawDataFromIHistorian)と他のデータ(GasNominationsRawData_Insert)の生データを実行すると、このデータをテーブルにINSERTする必要があります。

私の最初のSPが動作しますが、私はこれをGasRawDataという名前のテーブルに挿入することはできません。メッセージが挿入SPを実行することですトリングとき 『GasNominationsRawData_Insert』 ...

「メッセージ201、レベル16、状態4、手順GasNominationsRawData_Insert、行0 手順や機能を表示しませんでしたパラメーター 『@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

を持っている問題は、手順GasNominationsRawData_Insert呼び出すときに予想されるパラメータを渡していないとして、のようです。そのストアドプロシージャの実行方法を教えてください。また、あなただけの1つのストアドプロシージャを持っている必要があり、これを試してみてください。

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 
    ') 
0

このエラーメッセージは、メッセージ201

を必要とする@timestampパラメータ、レベル16、状態4へ値を渡すアレントすることを示しています、プロシージャGasNominationsRawData_Insert、Line 0プロシージャまたは関数 'GasNominationsRawData_Insert'は、供給されなかったパラメータ '@timestamp'を要求します。

解決策は、パラメータを渡すか、デフォルト値を追加してオプションにすることです。

手続きを呼び出す場所にコードを投稿できる場合は、おそらくもっと助けることができます。