SQL中的问题?急急急。。。。。。 (100分)

D

dyq81

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL语言中,用ALTER TABLE 〈表名〉 ADD ...... 语句可为数据库增加新的字段,不过我在
编程中遇到一个难题,若以上语句中的“表名”为一个变量,在程序中此语句是怎样的写法?
我尝试用以下方法:
close;
sql.clear;
sql.Add('alter table '+tablename+' add 是否打印 boolean');
execsql;

却出错,出错信息为"table does not exist" ,我是使用BDE的,请各位高手给予解答。
 
'ALTER TABLE '+〈表名〉+' ADD ...... '
你是这个意思吗?
 
是用ado控件吗
adoquery1.commandtext='alter table '+tablename+ 'add....'

....
下面不用我说了吧?

 
TO honestman chshanghai
是在QUERY控件中,用如下语句:
query1.sql.add( 'alter table ........')
请问这个语句正确的写法应是怎样的?
 
   ALTER TABLE 语句执行改变数据库结构的工作,它可以向表中添加或者删除一列。
函数的语法如下:

    

   ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT
index] |

   CONSTRAINT multifieldindex} |

   DROP {COLUMN field I CONSTRAINT indexname} }

  

   ALTER TABLE 语句中包含两个子语句:ADD COLUMN或者DROP COLUMN,其中ADD
COLUMN执行向表中添加列的工作,DROP COLUMN执行删除表中列的工作。另外CONSTRAINT
子语句执行建立数据索引的工作。语法中的其它要素解释如下:

   

   table

   要改变结构的表的名称

   field

   要添加/删除的列的名称

   type(size)

   添加列的数据类型以及数据长度

   index

   索引的名称

   multifieldindex

   多字段索引名称

 
……给变量赋值
ALTER TABLE :变量 ADD ......
(SQL中冒号代表变量)
 
加一个memo
var s,tablename:string;
s:='alter table '+"'+tablename+'"+' add......';
memo.text:=s;
query1.close;
query1.sql.clear;
query1.sql.assgin(memo.lines);
query1.excute;
我是刚come in 的
 
declare @tablename nvarchar(100)
set @tablename='你要传递的参数值'

exec('alter table '+@tablename+ 'add....')

看一下SQL Server的系统存储过程就知道了,那里例子很多。
 
'alter table '+edit1.text+'...
不能用'alter table :tablename'带参数的方法,
因为delphi会自动给:tablename加上单引号
 
赞同SOFTDOG兄的方法。
 
SQL7里哪来的BOOLEAN类型?
 
同意 bee2001
 
你的写法是没有错的.
很可能是在此之前变量TableName没有赋值或赋值不正确.
 
好象改变字段的属性如长度、类型不行。
 
sql.Add('alter table '''+tablename+''' add 是否打印 boolean');
 
除了数据类型boolean,你的语法没有问题。
你可以跟踪一下你的tablename这个变量,看看加到sql语句中的时候的值是多少,看
是不是你需要的值。
 
"'+tablename+'"
add(是否打印 boolean)
 
'alter table '''+tablename+''' add ...
 
顶部