delphi6.0+ADO+MSSQLSERVER建立一个临时表的问题?(50分)

  • 主题发起人 主题发起人 djf813
  • 开始时间 开始时间
D

djf813

Unregistered / Unconfirmed
GUEST, unregistred user!
1.如何在服务器端中产生一个临时表,表的名称可以随登录计算机的名称而改变,
并且程序关闭后自动删除临时表,请给出详细过程(最好用TADOTABLE创建)。
2.adotable的indexname这个属性如何使用,为什么我选择了一个在服务器上建立
好的索引名后,程序无法按索引排序。
 
临时表

也可以创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会
自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。
本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用
户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学
符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server
断开连接时被删除。
例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安全权限
就可以使用该表,除非它已删除。如果创建名为 #employees 的本地临时表,只有您能对
该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的全局临时表,数据
表中的任何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用,则当您断
开连接时该表删除。如果该表在您创建后有其他用户使用,则 SQL Server在所有用户断
开连接后删除该表。

 
对不起,没时间给你写源程序。不过可以告诉你思路
问题一:首先用调用函数得到计算机名,然后在执行工SQL语句建立临时表
如果创建名为 #表名 的本地临时表,只有您能对
该表执行操作且在断开连接时该表删除。如果创建名为 ##表名 的全局临时表,数据
表中的任何用户均可对该表执行操作。
问题二:可以用SQL排序,或者建立一排序视图
 
谢谢楼上,第二个问题我自己解决了,谁能告诉我第一个答案,谢谢!
 
sdhxdjw不是说得很清楚了吗
 
调用 GetComputerName 取得计算机名称后用 ADOCommand 执行动态 SQL,大概如下:

ADOCommand.CommandText :=
' CREATE TABLE #' + ComputerName + ' (' +
' Field1 int,' +
' Field2 int' +
' ......'
ADOCommand.CommandType := cmdText;
ADOCommand.Execute;

之后便可用 ADOTable 打开创建的 #ComputerName 表了,程序退出或断开连结后表会自动删除。
 
多人接受答案了。
 
后退
顶部