关于ADOQuery和数据库

devie 2002-10-08 03:09:41
我在程序中用ADOQuery执行SQL语句生成表
SQL为
if exists (select * from sysobjects where id = object_id(N'[dbo].[sdABC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[sdABC]
GO
create table sdABC (
ABCCode varchar(1) not null,
ABCWorthRate smallint not null,
ABCKindRate smallint not null,
CONSTRAINT PK_sdABC PRIMARY KEY NONCLUSTERED (
ABCCode
)
)
但是总是提示“GO”附近有语法错误。
删除
if exists (select * from sysobjects where id = object_id(N'[dbo].[sdABC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[sdABC]
GO
后可以执行
请问什么原因?
...全文
46 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Libran 2002-10-08
  • 打赏
  • 举报
回复
GO 不是 Transact-SQL 语句;而是可为 osql 和 isql 实用工具及 SQL Server 查询分析器识别的命令。
如果基于 DB-Library、ODBC 或 OLE DB APIs 的应用程序试图执行 GO 命令时会收到语法错误。SQL Server 实用工具永远不会向服务器发送 GO 命令。


mee123456 2002-10-08
  • 打赏
  • 举报
回复
楼上的说的很对。
ADOQuery中执行多条sql语句不用GO,只需一条接一条的写就行了中间加空格。
如;insert into bmb(Bm_Bh,.....) update stu set stu_name='tom' where ...
如果用ADOQuery->SQL->LoadFromFile载入多行sql则,每行结尾只能有回车符,不能有'\0',否则只执行第一句,如果是用程序写入文件的sql可以在写入sql串时少写一个字符.
hmily1688 2002-10-08
  • 打赏
  • 举报
回复
你在sqlquery中执行能成功,在企业管理器中就不能成功,我是说sql server ,你把go去掉就ok了,可能是不支持的原因吧。
tony808 2002-10-08
  • 打赏
  • 举报
回复
不用go了

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧