循环中
fetch cur_1  into @str_name
select @str_return=@str_return+'$'+@str_name
变成
select @str_return=@str_return+'$'+@str_name
fetch cur_1  into @str_name
即可

解决方案 »

  1.   

    为什么要用光标?
    数据量一大则巨慢。直接这样即可:
    DECLARE  @str_name varchar(400)
    set @str_name = ‘’
    select @str_name = @str_name +’$’ + lastname from Employees where lastname like @search_term + '%';
    set @str_name = right(@str_name,len(@str_name)-1)
    print @str_name
      

  2.   

    为什么要用光标?
    数据量一大则巨慢。直接这样即可:
    DECLARE  @str_name varchar(400)
    set @str_name = ''
    select @str_name = @str_name +'$' + lastname from Employees where lastname like @search_term + '%';
    set @str_name = right(@str_name,len(@str_name)-1)
    print @str_name
      

  3.   

    "循环中
    fetch cur_1  into @str_name
    select @str_return=@str_return+'$'+@str_name
    变成
    select @str_return=@str_return+'$'+@str_name
    fetch cur_1  into @str_name
    即可"仍旧是一样的结果!没有用!
      

  4.   

    唉,仔细一看原来是这个问题。
    下面的试试,如果不行我把头给你。CREATE PROCEDURE sp_return_1
    @search_term  varchar(1000),  
    @str_return varchar(4000)  output
    AS
    DECLARE  @str_name varchar(400) declare cur_1 cursor for
    select lastname from Employees where lastname like @search_term + '%'

    open cur_1
    fetch cur_1  into @str_name
    select @str_return=''
    while @@fetch_status=0
    begin
    select @str_return=@str_return+'$'+@str_name
    fetch cur_1  into @str_name
    end
    set @str_return = right(@str_return,len(@str_return)-1)
    close cur_1
    deallocate cur_1
    GO为什么不用我上面直接的SQL语句,而非要用光标?