Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

INSERT INTO with variable for DB

I want to insert:

  • to database TEST, table SUBJECT, field aSubject when @Database = 'TS'
  • to database TEST1, table SUBJECT, field aSubject when @Database = 'TS1'
  • else to database DEMO, table SUBJECT, field aSubject

I tried this:

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'

I get error:

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '('.
like image 516
hoggar Avatar asked Jul 19 '26 14:07

hoggar


1 Answers

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
like image 137
M.Ali Avatar answered Jul 22 '26 04:07

M.Ali



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!