看得眼花,没看完简化你的程序,尽量少用游标,能不用就不用,如下面存储过程就完全可以不用:/*将产品名称串联起来,通过;分隔*/
create proc GetProductName(@tar_id int, @ProName varchar(2000) output)
as
begin
declare @strTemp varchar(2000)
select @strTemp = ''
select @strTemp=@strTemp+';'+hpr_name
from (select distinct hpr_name from pro_article_product where tar_id=@tar_id) t
if @proName<>''
select @proName=substring(@strTemp,2,len(@strTemp)-1)
else
select @proName=@strTemp
return 0
end
create proc GetProductName(@tar_id int, @ProName varchar(2000) output)
as
begin
declare @strTemp varchar(2000)
select @strTemp = ''
select @strTemp=@strTemp+';'+hpr_name
from (select distinct hpr_name from pro_article_product where tar_id=@tar_id) t
if @proName<>''
select @proName=substring(@strTemp,2,len(@strTemp)-1)
else
select @proName=@strTemp
return 0
end
http://community.csdn.net/Expert/topic/3646/3646970.xml?temp=.5366327
http://community.csdn.net/Expert/topic/3646/3646970.xml?temp=.5366327你给的解决方式,我先看看
insert into ArticleInfo(DocID, Title, DateCreate, Hits2004, Hits2003, YearCreate, DisLevel,ProductLine, ProductName, tTransLation, OriginalID)
values(@DocID, @Title, @DateCreate,@Hits2004,@Hits2003,@CreateYear,@DisLevel,@ProLine, @ProductName, @Trans, @OriginalID)
这里的选择列是否是全部?或者是哪一部分?
是ArticleInfo表的部分
你说的是什么意思啊?
难道一个proc中引用了cursor同时这个proc调用了其他两个proc(这两个proc也引用了cursor)
就会引起cursor混乱?请求风云给解答一下,谢谢
insert #test
select 'a'
union select 'b'
union select 'c'declare @str varchar(1000)
set @str=''
select @str=@str+value+',' from #test
print @str
就会引起cursor混乱?"如果游标名字不一样的话, 那没影响的;若名字一样,若未执行“deallocate 游标名字”,而又创建了个同名字的游标,则会提示游标已存在的
declare
@a varchar(2000)
--这是你给的数据用来测试
set @a='DesignJet 1050C (E/A0);DesignJet 200 (E/A0 and D/A1);DesignJet 2000CP (E/A0);DesignJet 220 (E/A0 and D/A1);DesignJet 230 (D/A1 and E/A0);DesignJet 250C (D/A1 and E/A0);DesignJet 3000CP (E/A0);DesignJet 330 (D/A1 and E/A0);DesignJet 350C (D/A1 and E/A0);DesignJet 430 printer (D/A1 and E/A0 );DesignJet 450C printer (D/A1 and E/A0);DesignJet 500(24-inch and 42-inch);DesignJet 5000 (42-inch and 60-inch);DesignJet 600 (D/A1 and E/A0);DesignJet 650C (D/A1 and E/A0);DesignJet 650C/B (D/A1 and E/A0);DesignJet 700 (D/A1 and E/A0);DesignJet 700/B (D/A1 and E/A0);DesignJet 750C (D/A1 and E/A0);DesignJet 750C+ (D/A1 and E/A0);DesignJet 750C+/B (D/A1 and E/A0);DesignJet 800(24-inch and 42-inch);DesignJet ColorPro CAD'
--select返回的长度是有限制的
select @a
--print返回的长度和原来一致
print @a
create table #test
(
b varchar(2000))insert into #test values(@a)select len(b),b from #test
select len(@a)
drop table #test
to: xlhl(顽皮兔子) 那是因为查询分析器限制显示了,
option中可以设置