我们在Delphi中使用SQL Server和ADO,我们正在创建用于报表程序的临时表。
程序流程如下:
它通常有效,但有些客户经常抱怨" drop table"失败,错误"无效的对象名称"。
我可以远程访问客户数据库,我看到了以下内容:
此表的表架构如何更改,以及如何处理此问题?为什么它有时会起作用,有时候不起作用?
答案 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服务器为其名称添加一个唯一的后缀)