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前面少了一个@_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 回答