我在Delphi6.0里用如下语句创建临时表,
sql := 'CREATE TABLE #tempmat (';
sql := sql+'selected [bit] NULL default (0),';
sql := sql+'code [char] (6) NOT NULL ,';
sql := sql+'name [char] (20) NULL ,';
sql := sql+'pname [char] (40) NULL ,';
sql := sql+'price [money] NULL ,';
sql := sql+'pno [int] NULL )';
adoquery.Close();
adoquery.SQL.Clear();
adoquery.SQL.Add(sql);
adoquery.ExecSQL;
但程序运行时报错,提示‘对象名#tempmat无效’,这是怎么回事?
建立其它临时表也是这样的情况,应该不关SQL语句的事。
sql := 'CREATE TABLE #tempmat (';
sql := sql+'selected [bit] NULL default (0),';
sql := sql+'code [char] (6) NOT NULL ,';
sql := sql+'name [char] (20) NULL ,';
sql := sql+'pname [char] (40) NULL ,';
sql := sql+'price [money] NULL ,';
sql := sql+'pno [int] NULL )';
adoquery.Close();
adoquery.SQL.Clear();
adoquery.SQL.Add(sql);
adoquery.ExecSQL;
但程序运行时报错,提示‘对象名#tempmat无效’,这是怎么回事?
建立其它临时表也是这样的情况,应该不关SQL语句的事。
我想你可能需要全局临时表,表前面加##
sql := 'CREATE TABLE ##tempmat (';
.....
[selected] [bit] NULL ,
[code] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[pname] [char] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[price] [money] NULL ,
[pno] [int] NULL
) ON [PRIMARY]
GOALTER TABLE [dbo].[tempmat] WITH NOCHECK ADD
CONSTRAINT [DF_tempmat_selected] DEFAULT (0) FOR [selected]表名不可以用#
但在Delphi里通过ADOQuery执行时,在CREATE TABLE #tempmat这一句就报错了,
所以zjf27(How d you d) 说的不对,且我要建的是临时表,怎能不用号呢?
firetoucher(蹈火者) 所说的也解决不了问题,因为第一句就报错,不存在
您说的问题。
到底你们有没有用ADOQuery建过临时表呀?
我只是觉得奇怪,为什么上述建立临时表的语句,我在普通的TQuery控件里可以成功执行,
但是在TADOQuery控件里就不行?有谁试过这样的情况?