【问题标题】:Stored procedure temporary table problem?存储过程临时表问题?
【发布时间】:2011-09-29 16:20:54
【问题描述】:

我正在使用存储过程将数据从两个不同的数据库提取到 ASP.NET 应用程序。我的存储过程工作如下 - 检查全局临时表是否存在 ##temp_table - 如果存在则删除它,如果不创建新的临时表说 ##temp_table - 从两个不同的数据库中提取数据并将其填充到临时表中 - 从临时表中选择数据 - 删除临时表

现在的问题是,当许多用户使用与上述相同的存储过程访问同一页面时,某些用户会收到临时表已经存在的错误。 现在请有人帮我解决这样的问题或建议我一些替代方案,因为我不想在侧面的 ASP 代码中编写查询。有人建议我使用视图。等待您的建议。

【问题讨论】:

    标签: stored-procedures


    【解决方案1】:

    “##”表可以被所有到 SQL 实例的连接访问,而“#”表只能被创建它们的连接访问。您描述的功能听起来应该使用“#”表,而不是“##”表。

    【讨论】:

      【解决方案2】:

      你不能创建表,你必须为临时表存储声明变量...使用您希望填写的列...声明表变量像这样:

      declare @tmpTable table(myID int,myName varchar(50));
      
      fill it like
      insert into @tmpTable
      Select * from table1
      
      use it like
      select * from @tmpTable
      

      【讨论】:

      • "@" 临时表也可以工作。 @ 和# 表非常相似,最终使用哪个最好取决于正在完成的工作。
      • 感谢您如此迅速地发布我的问题的解决方案。我将尝试这两种解决方案并在明天发布我的结果。
      • 这是完美的解决方案,我的问题已经解决。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 2021-03-19
      • 2017-04-02
      • 1970-01-01
      • 2011-10-29
      相关资源
      最近更新 更多