0

T-SQL ストアド プロシージャを開発し、そこでロジックと計算を実行しようとしていますが、何らかの理由で構文エラーが発生します。どうすればいいかわからない重要な場所を強調します。

CREATE PROC AddInvestment
@_Investor nvarchar(89),
@_Sum decimal(19,4),
@_Currency smallint,
@_Rate tinyint,
@_Date date,
@_Comment nvarchar(max)

AS

DECLARE @_MavroRate decimal(19,4)
DECLARE @_Mavro decimal(19,4)

SELECT mr.[40] INTO @_MavroRate <==== ERROR
FROM dbo.MavroRateBuy mr
WHERE mr.Date = @_Date

@_Mavro = _Sum / @_MavroRate <==== ERROR

INSERT INTO Investments(Investor, Sum, Currency, Rate, Date, Mavro, MavroRate, Comment)
VALUES (@_Investor, @_Sum, @_Currency, @_Rate, @_Date, @_Mavro, @_MavroRate, @_Comment)

T-SQLステートメントで確認して、ここで間違っていることを指摘してください。

ありがとう!

4

3 に答える 3

2

このようなものだと思います:

SELECT @_MavroRate = mr.[40]  
FROM dbo.MavroRateBuy mr
WHERE mr.Date = @_Date

SELECT @_Mavro = @_Sum / @_MavroRate 

@_Sum は、使用する前に値が必要です。

于 2012-06-13T15:20:13.210 に答える
1

これを試して:

CREATE PROC AddInvestment
@_Investor nvarchar(89),
@_Sum decimal(19,4),
@_Currency smallint,
@_Rate tinyint,
@_Date date,
@_Comment nvarchar(max)

AS

DECLARE @_MavroRate decimal(19,4)
DECLARE @_Mavro decimal(19,4)

SELECT @_MavroRate = mr.[40]
FROM dbo.MavroRateBuy mr
WHERE mr.Date = @_Date

SET @_Mavro = @_Sum / @_MavroRate

INSERT INTO Investments(Investor, Sum, Currency, Rate, Date, Mavro, MavroRate, Comment)
VALUES (@_Investor, @_Sum, @_Currency, @_Rate, @_Date, @_Mavro, @_MavroRate, @_Comment)
于 2012-06-13T15:22:15.153 に答える
1

SET行の前にa がありません@_Mavro = _Sum / @_MavroRate。以下のコードのようになります。

SET @_Mavro = _Sum / @_MavroRate

また、INTO変数を設定するためではなく、結果を新しいテーブルに挿入するために使用されます。以下のコードは、select ステートメントで変数を設定する正しい方法です。

SELECT @_MavroRate = mr.[40]
FROM dbo.MavroRateBuy mr
WHERE mr.Date = @_Date
于 2012-06-13T15:32:21.370 に答える