CREATE proc PTJ_news_search
@C1ID INT,
@WD varchar(255),
@LB INT,
@recordnum INT OUTPUT

as
declare @SQL varchar(255)
set nocount on
begin
if @lb=1
begin
set @SQL='select '+cast(@recordnum as varchar)+'=COUNT(ID) from new where topic like '+''''+'%'+@wd+'%'+''''
end
else
begin
set @SQL='select '+cast(@recordnum as varchar)+'=COUNT(ID) from new where author like '+''''+'%'+@wd+'%'+''''
end
if @C1ID<>0 
begin
set @SQL=@SQL+'and C1ID='+CAST(@C1ID AS VARCHAR)
endexecute(@SQL) returnend
GO这个最后的我用ASP提出的时候。。是空的。。
如果我把
'+cast(@recordnum as varchar)+'=COUNT(ID)换成了表中的字段名。一切正常~~
大侠救命~

解决方案 »

  1.   

    CREATE proc PTJ_news_search
    @C1ID INT,
    @WD varchar(255),
    @LB INT,
    @recordnum INT OUTPUT

    as
    declare @SQL nvarchar(255)    /*注意:声明为nvarchar,而不是varchar*/
    set nocount on
    begin
    if @lb=1
    begin
    set @SQL='select @recordnum =COUNT(ID) from new where topic like '+''''+'%'+@wd+'%'+''''
    end
    else
    begin
    set @SQL='select @recordnum =COUNT(ID) from new where author like '+''''+'%'+@wd+'%'+''''
    end
    if @C1ID<>0 
    begin
    set @SQL=@SQL+'and C1ID='+CAST(@C1ID AS VARCHAR)
    end
        --执行查询
        EXEC sp_executesql @SQL,N'@recordnum INT OUTPUT',@recordnum OUTPUT
    return
    end
    GO
      

  2.   

    我在页面里面通知这种方法调出来的记录还是零啊
    dim cmd1
    set cmd1=server.CreateObject("adodb.command")
    with cmd1
    .ActiveConnection=connstr
    .CommandText="PTJ_news_search"
    .CommandType=4
    .Prepared=true
    .Parameters.append .CreateParameter ("@C1ID",3,1,4,C1ID)
    .Parameters.append .CreateParameter ("@wd",200,1,4,wd)
    .Parameters.append .CreateParameter ("@lb",200,1,4,lb)
    .Parameters.append .CreateParameter ("@recordnum",3,2,4)
    set rs2=.execute
    end with

          RecordNum=cmd1(3)
    调的方法不对吗??