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

请教一存储过程查不出数据问题?
是这样的:
'存储过程内容:
CREATE   PROCEDURE   shop_puserid
@ids   varchar(100)   =null
AS
select   P.id,M.id,M.username,M.zx_name,M.Folder_b,M.Folder_b,P.p_name,P
.p_userid   from   [Member]   as   M,[Product]   as   P   where   P.id   in(@ids)   and   M.id=P
.p_userid
GO

'调用:
<%
ids   =   request.QueryString( "offer_ids ") '获取到的产品Product的p_userid字段集
set   objCmd=Server.CreateObject( "Adodb.Command ")
objCmd.ActiveConnection=conn
objCmd.CommandText= "shop_puserid "
objCmd( "@ids ")=ids
set   rs=objCmd.execute
%>
我如果直接用recordset把SQL语句打开是可以查到rs记录集的。
可是改成存储过程就查不到了
也没发现问题,难不成要用declare?
到底怎么改呢?请更正,多谢各位前辈!?

------解决方案--------------------
晕了

把程序和数据库发来,我试试
QQ:381584252(隐身中)
电邮:hztgcl1986@163.com

------解决方案--------------------
他这个存储过程就有问题,存储过程我已经解决了,但是我循环的时候总是报错
“对象关闭时,不允许操作”
还没有查到解决办法
我把存储过程给你吧
CREATE PROCEDURE shop_puserid
@id varchar(100)
AS
Set Nocount On

declare @pos int
declare @oldPos int
declare @tempstr varchar(100)

create table #temp_id
(
id int
)


set @pos=1
set @oldPos=1
while @pos <len(@id)
begin
set @pos=charindex( ', ',@id,@oldpos)
if @pos> 0
begin
set @tempstr=substring(@id,@oldpos,@pos-@oldpos)
set @oldpos=@pos+1
end
else
begin
set @tempstr=substring(@id,@oldpos,len(@id)-@oldpos+1)
set @pos=len(@id)
end
insert into #temp_id
select @tempstr
end

select P.id,M.id,M.username,M.zx_name,M.Folder_b,M.Folder_b,P.p_name,P
.p_userid from [Member] as M,[Product] as P where P.id in(select id from #temp_id where id is not null) and M.id=P.p_userid

drop table #Temp_id
GO