通过command对象调用存储过程,有一个输入参数,返回记录集;经过测试,发现 response.Write(rs.recordcount)没有输出记录集数目;这是哪里出现了问题?
语句select * from menu_second_t where second_id in (1,2,3,4) 在sql查询窗口执行是没有问题,而且也显示记录;
<%
inputInfo="1,2,3,4"
Set MyComm = Server.CreateObject("ADODB.Command")
dCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200
adVarWChar = 202
with MyComm
.ActiveConnection = Conn
.CommandText = "power_show_p"
.CommandType = 4
.Prepared = true
.Parameters.append .CreateParameter("@LimitStr",adVarChar,adParaminput,32,inputInfo)
set rs = .Execute
end with
response.Write(rs.recordcount)
%>
create procedure power_show_p
@LimitStr varchar (32)
as
SET NOCOUNT ON
begin
select * from menu_second_t where second_id in (@LimitStr)
end
------解决思路----------------------
这句话这样是错的
select * from menu_second_t where second_id in (@LimitStr)
你的@LimitStr是字符串,怎么能直接用IN呢...
改成这样吧
Declare @SQLTXT NVARCHAR(1000)
SET @SQLTXT = N'select * from menu_second_t where second_id in (' + @LimitStr + ')'
EXEC(@SQLTXT)
------解决思路----------------------
如果inputInfo是单个值(比如inputInfo='2'),你的存储过程这么写没问题
如果inputInfo是多个值,就要拼SQL了
create procedure power_show_p
@LimitStr varchar (32)
as
SET NOCOUNT ON
begin
declare @sql varchar(2000)
set @sql = 'select * from menu_second_t where second_id in ('+@LimitStr+')'
print @sql
exec(@sql)
end