2011-10-20 4 views
0

몇 가지 웹 검색을 수행했지만 실제로 1x 데이터베이스 테이블과 2x 저장 프로 시저의 문제를 해결할 수있는 항목을 찾을 수 없습니다. 나는이 주제에 초보자이기 때문에 어떤 도움이 많이 appriechiated입니다.SQL Server : 저장 프로 시저 (초보자)

2 개의 저장 프로 시저가 있습니다. 이들 중 하나는 다른 데이터 베 이스 (GetRawDataFromIHistorian)의 원시 데이터와 다른 데이터 (GasNominationsRawData_Insert)를 쿼리 할 때이 데이터를 테이블에 INSERT해야합니다.

내 첫 SP가 작동하지만 이걸 내 GasRawData라는 테이블에 삽입하는 것 같습니다. 메시지 표시

"메시지 (201), 레벨 16, 상태 4, 절차 GasNominationsRawData_Insert, 라인 0 절차 또는 함수 'GasNominationsRawData_Insert'는 아니었다 파라미터 '@timestamp'를 기대 ... 삽입 SP가 실행 트링 때 공급했다. "

내 첫 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 
    ') 

그리고 내 삽입 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 테이블을 채 웁니다.

은 당신이 예상 매개 변수를 전달하지 않는 한 당신이 GasNominationsRawData_Insert 프로 시저를 호출 할 때

RecordID (PK, int, not null) 
timestamp (datetime, not null) 
tagname (nvarchar(50), not null) 
value (real, not null) 

답변

0

문제가 될 것으로 보인다 내 GasRawData 테이블에 4 열을 ...있다. 저장 프로 시저를 어떻게 실행하는지 보여줄 수 있습니까? 또한, 당신은 단지 하나 개의 저장 프로 시저가 있어야합니다,이 시도 :

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로 값을 전달이 arent 보여줍니다 , Procedure GasNominationsRawData_Insert, Line 0 프로 시저 또는 함수 'GasNominationsRawData_Insert'는 제공되지 않은 매개 변수 '@timestamp'를 필요로합니다.

해결 방법은 매개 변수를 전달하거나 기본값을 추가하여 선택적으로 만드는 것입니다.

우리가 아마도 도움이 될 수있는 절차를 호출 할 수있는 코드를 게시 할 수 있다면