写了个简单函数,报一大串异常,求解
写了个简单函数,报一大串错误,求解
报错信息:
7 关键字 'DECLARE' 附近有语法错误。 Severity 15
8 关键字 'DECLARE' 附近有语法错误。 Severity 15
9 关键字 'SELECT' 附近有语法错误。 Severity 15
13 必须声明标量变量 "@minMoney"。 Severity 15 State 2
16 必须声明标量变量 "@maxMoney"。 Severity 15 State 2
18 必须声明标量变量 "@minMoney"。 Severity 15 State 2
20 必须声明标量变量 "@rate"。 Severity 15 State 2
23 必须声明标量变量 "@minMoney"。 Severity 15 State 2
25 必须声明标量变量 "@rate"。 Severity 15 State 2
28 必须声明标量变量 "@minMoney"。 Severity 15 State 2
------解决方案--------------------
t-sql没有double类型啊
------解决方案--------------------
------解决方案--------------------
sql server没有double类型
------解决方案--------------------
改成这样,用float类型:
CREATE FUNCTION w_getPushMonet(@userId VARCHAR(40),@yeji MONEY) RETURNS MONEY
AS
BEGIN
DECLARE @job VARCHAR
DECLARE @unit VARCHAR
DECLARE @rate DOUBLE
DECLARE @minMoney DOUBLE
DECLARE @maxMoney DOUBLE
SELECT @job=JobTitle,@unit=BusinessUnitId FROM [User] WHERE UserId=@userId
DECLARE temp_ CURSOR FOR
SELECT c__yjed,c__yjedmax,c__tcxs FROM e__tcgz WHERE c__bm=@unit AND c__gw=@job;
OPEN temp_
FETCH NEXT FROM temp_ INTO @minMoney,@maxMoney,@rate
WHILE(@@FETCH_STATUS=0)
BEGIN
IF @maxMoney='' OR @maxMoney IS NULL
BEGIN
IF @yeji>=@minMoney
BEGIN
RETURN @rate
END
END
ELSE IF @minMoney<=@yeji AND @maxMoney>@yeji
BEGIN
RETURN @rate
END
END
FETCH NEXT FROM temp_ INTO @minMoney,@maxMoney,@rate
CLOSE temp_
DEALLOCATE temp_
END
报错信息:
7 关键字 'DECLARE' 附近有语法错误。 Severity 15
8 关键字 'DECLARE' 附近有语法错误。 Severity 15
9 关键字 'SELECT' 附近有语法错误。 Severity 15
13 必须声明标量变量 "@minMoney"。 Severity 15 State 2
16 必须声明标量变量 "@maxMoney"。 Severity 15 State 2
18 必须声明标量变量 "@minMoney"。 Severity 15 State 2
20 必须声明标量变量 "@rate"。 Severity 15 State 2
23 必须声明标量变量 "@minMoney"。 Severity 15 State 2
25 必须声明标量变量 "@rate"。 Severity 15 State 2
28 必须声明标量变量 "@minMoney"。 Severity 15 State 2
------解决方案--------------------
t-sql没有double类型啊
------解决方案--------------------
CREATE FUNCTION w_getPushMonet(@userId VARCHAR(40),@yeji MONEY)
RETURNS MONEY
AS
BEGIN
DECLARE @job VARCHAR(10)
DECLARE @unit VARCHAR(10)
DECLARE @rate BIGINT
DECLARE @minMoney BIGINT
DECLARE @maxMoney BIGINT
SELECT @job=JobTitle,@unit=BusinessUnitId FROM [User] WHERE UserId=@userId
DECLARE temp_ CURSOR FOR
SELECT c__yjed,c__yjedmax,c__tcxs FROM e__tcgz WHERE c__bm=@unit AND c__gw=@job;
OPEN temp_
FETCH NEXT FROM temp_ INTO @minMoney,@maxMoney,@rate
WHILE(@@FETCH_STATUS=0)
BEGIN
IF @maxMoney='' OR @maxMoney IS NULL
BEGIN
IF @yeji>=@minMoney
BEGIN
RETURN @rate
END
END
ELSE IF @minMoney<=@yeji AND @maxMoney>@yeji
BEGIN
RETURN @rate
END
END
FETCH NEXT FROM temp_ INTO @minMoney,@maxMoney,@rate
CLOSE temp_
DEALLOCATE temp_
END
------解决方案--------------------
sql server没有double类型
------解决方案--------------------
改成这样,用float类型:
CREATE FUNCTION w_getPushMonet(@userId VARCHAR(40),@yeji MONEY) RETURNS MONEY
AS
BEGIN
DECLARE @job VARCHAR(20)
DECLARE @unit VARCHAR(20)
DECLARE @rate float
DECLARE @minMoney float