【问题标题】:Select.. Into MS Access to SQL Server equivalent选择.. 进入 MS Access 到 SQL Server 等效项
【发布时间】:2016-09-25 23:54:21
【问题描述】:

为了争论,我在 MS Access

中有以下 查询
select  id, value into newtable
from oldtable

我需要在 sql server 存储过程中复制它 会不会是这样:

Delete newtable if exists  
Create newtable  
Copy values  

或者有其他方法吗?

【问题讨论】:

  • SELECT * INTO... 是 SQL Server 中的兼容语法。

标签: sql sql-server ms-access stored-procedures


【解决方案1】:

如果表不存在,你会这样做:

select id, value
into newtable
from oldtable;

如果表确实存在:

drop table newtable;

select id, value
into newtable
from oldtable;

【讨论】:

  • 您展示的步骤是复制 select..into 行为的确切步骤吗?我不太关心语法(不过谢谢)
  • @Eminem 。 . . select into 的语法在两个数据库中是相同的。您的代码无需更改。
【解决方案2】:

如果您已经将旧表迁移到 SQL 服务器,请在您的过程中使用以下脚本。

    IF EXISTS (SELECT 1
             FROM INFORMATION_SCHEMA.TABLES 
             WHERE TABLE_SCHEMA = 'dbo' 
             AND  TABLE_NAME = 'NewTable')
    BEGIN
       DROP TABLE NewTable
    END

    SELECT ID,VALUE INTO NewTable FROM OldTable.

EXISTS 子句将检查并删除 NewTable,如果它已经存在于您的数据库中。在 SQL Server 中编写表存在性检查有多种不同的方法,您可以遵循其中任何一种方法。

   IF OBJECT_ID (N'NewTable', N'U') IS NOT NULL 
    DROP TABLE NewTable

   IF EXISTS(SELECT 1 FROM sys.Objects WHERE  Object_id = OBJECT_ID(N'dbo.NewTable') AND Type = N'U')
   BEGIN
      DROP TABLE NewTable
   END

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2017-06-30
    • 2015-06-28
    • 2013-12-22
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多