表格架构有时会发生变化

时间:2016-04-14 12:34:53

标签: delphi sql-server-2012

我们在Delphi中使用SQL Server和ADO,我们正在创建用于报表程序的临时表。

程序流程如下:

  1. 使用SQL查询创建一个表"创建表"
  2. 在表格中写入数据。
  3. 通过SQL查询删除表。
  4. 它通常有效,但有些客户经常抱怨" drop table"失败,错误"无效的对象名称"。

    我可以远程访问客户数据库,我看到了以下内容:

    • 表X显示在表格列表中(由Delphi提供)
    • 在Delphi中,表无法打开或删除。
    • 表架构是" Server \ 1"而不是" dbo"!

    此表的表架构如何更改,以及如何处理此问题?为什么它有时会起作用,有时候不起作用?

1 个答案:

答案 0 :(得分:1)

我建议使用临时表并将所有相关代码保存在SQL中。

IF OBJECT_ID('tempdb..#YourTable') IS NOT NULL
DROP TABLE ##YourTable; -- just a precaution if it's already there

SELECT <field list>
into #YourTable -- this creates a the table with the structure of the "select" dataset
from YourSource_table
join Another_table on <join conditions>
where <your selection conditions>;

在单独的查询中读取临时表中的数据

SELECT <field list> from #YourTable;

制作报告。 完成所有操作后,删除临时表

IF OBJECT_ID('tempdb..#YourTable') IS NOT NULL
DROP TABLE ##YourTable;

单个会话内可访问的临时表;这意味着您必须确保创建它并从同一个连接组件中读取并在两者之间保持打开状态。其他用户不会看到它们(MS SQL服务器为其名称添加一个唯一的后缀)