shrap2011 2015-05-11 10:14 采纳率: 0%
浏览 2786
已结题

ado.net 执行存储过程中使用临时表出错

ado.net执行存储过程提示找不到该临时表,但是在sql中直接执行就没问题,求教各位大神。
sql所在环境windows azure

  if (exists (select * from sys.objects where name = 'proc_Activity_StudioList'))
    drop proc proc_Activity_StudioList
go
create proc proc_Activity_StudioList
@province int,
@type int,
@collegeId int,
@index int,
@size int 
as
  IF EXISTS  (SELECT  * FROM dbo.SysObjects WHERE ID = object_id(N'#StudioList') AND OBJECTPROPERTY(ID, 'IsTable') = 1) 
        drop table #StudioList  

  declare @page int,@pageend int, @sql nvarchar(4000)
    set @page =(@index - 1) * @size + 1
    set @pageend = @index*@size

      set @sql = 'create table #StudioList(num float,PId int,UserNickName nvarchar(500),UserAvatar nvarchar(500),UpCount int,CommentCount int,RegisterCount int,
    Userid  bigint,Region nvarchar(100),Province nvarchar(100))
     INSERT  INTO #StudioList  
       select distinct  num=( a.[RegisterCount]*0.5 + a.[UpCount]*0.25 + a.[CommentCount]*0.25 ), a.[PId],temp.[UserNickName],temp.[UserAvatar],a.UpCount,a.CommentCount,a.RegisterCount,temp.[Userid],r.[CityName] as Region,r1.[CityName] as Province from [UserInfo] as temp
    inner join [dbo].ActivityStudioSet as a on a.userid = temp.[UserId] 
    left join [dbo].[Region] as r on temp.[Region] = r.[Codeid]
    left join [dbo].[Region] as r1 on temp.[Province] = r1.[Codeid]
    where  temp.[UserRole]=3  '

    if(@province > 0)
        set @sql = @sql +' and  temp.[Province] =   '+cast(@province as varchar(10))
    if(@collegeId > 0)
        set @sql = @sql +' and  temp.CollegeId =   '+cast(@collegeId as varchar(10))

    if(@type=1)
        set @sql = @sql +' and a.[IsRecommend] =1 '


    --print @sql
    exec(@sql)

    set @sql ='select * from  ( select  ROW_NUMBER() over(order by [Userid] ) as rownumber, * from #StudioList ) as a'

    if(@type = 1)
        set @sql = @sql + '  where a.rowNumber between '+cast(@page as varchar(10))+' and '+cast(@pageend as varchar(10)) 
    else if(@type = 2)
        set @sql = @sql + ' where a.rowNumber between '+cast(@page as varchar(10))+' and '+cast(@pageend as varchar(10))+' order by a.[RegisterCount] desc '
    else 
        set @sql = @sql + ' where a.rowNumber between '+cast(@page as varchar(10))+' and '+cast(@pageend as varchar(10))+' order by num desc '

--print @sql
exec( @sql)
IF EXISTS  (SELECT  * FROM dbo.SysObjects WHERE ID = object_id(N'#StudioList') AND OBJECTPROPERTY(ID, 'IsTable') = 1) 
        drop table #StudioList  
go
exec proc_Activity_StudioList @province=0,@type=1,@collegeId=0,@index=1,@size=30



  • 写回答

3条回答 默认 最新

  • shrap2011 2015-05-11 10:16
    关注

    Exception=Metis.MobileServer.MetisException.Exceptions.MetisDbException: Type:Error
    Description: SQL 执行异常!
    InnerException: Type: System.Data.SqlClient.SqlException (InnerException 1)
    Message: Invalid object name '#StudioList'.
    Source: .Net SqlClient Data Provider
    HelpLink:
    Data: System.Collections.ListDictionaryInternal
    StackTrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
    1 wrapCloseInAction)
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
    at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
    at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
    at System.Data.SqlClient.SqlDataReader.get_MetaData()
    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
    at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
    at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
    at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
    at Dapper.SqlMapper.<QueryImpl>d__11
    1.MoveNext()
    at System.Collections.Generic.List1..ctor(IEnumerable1 collection)
    at System.Linq.Enumerable.ToListTSource
    at Dapper.SqlMapper.QueryT
    at Metis.MobileServer.DataAccess.BaseDal.QueryListByProcT
    TargetSite: Void OnError(System.Data.SqlClient.SqlException, Boolean, System.Action`1[System.Action])

    Message: QueryListByProc :User=>proc_Activity_StudioList=>{"province":0,"type":1,"collegeId":0,"index":1,"size":30}

    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀