日期:2014-05-17  浏览次数:20593 次

写了个简单函数,报一大串错误,求解
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)