【问题标题】:INSERT INTO with variable for DBINSERT INTO 带有 DB 的变量
【发布时间】:2014-08-29 10:52:14
【问题描述】:

我要插入:

  • 到数据库TEST,表SUBJECT,字段aSubject@Database = 'TS'
  • 到数据库TEST1,表SUBJECT,字段aSubject@Database = 'TS1'
  • 否则数据库DEMO,表SUBJECT,字段aSubject

我试过这个:

DECLARE @Database varchar(10)
Set @Database = 'TS'

INSERT INTO
(
CASE
WHEN @Database = 'TS' THEN 'TEST.dbo.SUBJECT' 
WHEN @Database = 'TS1' then 'TEST1.dbo.SUBJECT'
ELSE 'DEMO.dbo.SUBJECT' END
) (aSubject)
SELECT 'Company'

我得到错误:

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '('.

【问题讨论】:

  • 表名或列名不能是变量。实际上,您必须创建一个扩展变量的新 SQL 语句。一种方法是动态 SQL,例如 declare @sql varchar(max) = 'select ...'; exec @sql;

标签: sql-server tsql variables insert-into


【解决方案1】:
DECLARE @Database SYSNAME;
Set @Database = 'TS'

SET @Database = CASE
                    WHEN @Database = 'TS'  THEN 'TEST' 
                    WHEN @Database = 'TS1' THEN 'TEST1'
                    ELSE 'DEMO' 
                END


DECLARE @sql NVARCHAR(MAX);


SET @sql= N' INSERT INTO ' + QUOTENAME(@Database) + N'.[dbo].[SUBJECT] '
        + N' SELECT ''Company'' '

EXECUTE sp_executesql @sql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-27
    • 2017-11-09
    • 2015-04-22
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多