求教如何写一句兼容Oracle以及Sql Server的Update多列语句

Lucifer-He 2008-11-28 10:15:47
eg:
UPDATE test t
SET (tablespace_name, extent_management) = (
SELECT (u.tablespace_name, u.extent_management)
FROM user_tables a, user_tablespaces u
WHERE t.table_name = a.table_name
AND a.tablespace_name = u.tablespace_name)
WHERE t.table_name LIKE '%A%';

此语句在Sql Server中好像不支持, Set一次多列,会报“(”附近有语法错误,查了,sql的联机帮助,貌似是没有类似的语法。

然而如果写成:
UPDATE test t
SET tablespace_name = u.tablespace_name,
extent_management = u.extent_management
FROM user_tables a, user_tablespaces u
WHERE t.table_name = a.table_name
AND a.tablespace_name = u.tablespace_name
AND t.table_name LIKE '%A%';
貌似Oracle会报ORA-00933: SQL command not properly ended的错误。

请问应该如何写能同时适用于这两个数据库?
...全文
237 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
codearts 2008-11-28
  • 打赏
  • 举报
回复
呵呵,跨数据库不是那么容易和简单的,还有些并发的问题、事务的问题。。。。。。
又是违规昵称 2008-11-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hebo2005 的回复:]
不用考虑了,两个DATABASE UPDATE的语法不一样的
[/Quote]

支持, 蹭分
hebo2005 2008-11-28
  • 打赏
  • 举报
回复
只有单表来更新,还有可能写个通用语法,多表条件就别想了
hebo2005 2008-11-28
  • 打赏
  • 举报
回复
不用考虑了,两个DATABASE UPDATE的语法不一样的

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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