写个函数发现总是说第六行@num附近有错误,求指教!!!
这个函数只是来算一下某一读者借了多少本书
create function numBook(@readerName varchar(20))
returns int
as
begin
declare @num int;
select COUNT(*) into @num 
from t_borrow,t_reader2 
where t_borrow.readerId=t_reader2.readerId 
and t_reader2.readerName=@readerName
group by readerId;
return @num;
end

解决方案 »

  1.   

    create function numBook(@readerName varchar(20))
    returns int
    as
    begin
    declare @num int;
    select @num=COUNT(*) 
    from t_borrow,t_reader2  
    where t_borrow.readerId=t_reader2.readerId  
    and t_reader2.readerName=@readerName
    group by readerId;
    return @num;
    end--select count(*) into @num是Oracle中的语法
      

  2.   


    create function numBook(@readerName varchar(20))
    returns int
    as
    begin
    declare @num int;
    select @num=COUNT(*) 
    from t_borrow,t_reader2  
    where t_borrow.readerId=t_reader2.readerId  
    and t_reader2.readerName=@readerName
    group by readerId;--你加一个group by干什么?你就计算指定的一个人,干嘛要分组
    return @num;
    end
      

  3.   

    oh我错了,用group by只是同学建议我试试现在去掉了,然后也改过来了,不报错了。多谢啊!那个,再弱弱的问,要怎么调用啊
      

  4.   

    declare @readerName varchar(20)
    set @readerName='aa'
    select dbo.numBook(@readerName)
      

  5.   


    是该用存储过程调用吗?我这样写对不对?
    create procedure pr_func
    @readerName varchar(20)
    as
    create function numBook(@readerName varchar(20))
    returns int
    as
    begin
    declare @num int;
    select @num=COUNT(*) 
    from t_borrow,t_reader2 
    where t_borrow.readerId=t_reader2.readerId 
    and t_reader2.readerName=@readerName;
    return @num;
    end
    go
    EXEC pr_func('qw')
      

  6.   

    调用存储过程 exec pr_func 'qw'不要括号。
      

  7.   


    恩,果然不能加括号,可是为什么我的存储过程也报错呢,说在第四行function附近有错误,求指教