Akshay Choudhary
Akshay Choudhary

Reputation: 55

Chars after dot are removed while executing dynamic sql

I have a SQL statement like below:-

DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)

SET @SQL='
USE '+@DbName+'
EXEC (@SQL)

When I am trying to execute this statement it is removing '.18' from my DbName and throwing error that database model54 doesn't exists.

Any idea how to resolve this??

Upvotes: 0

Views: 146

Answers (2)

RBarryYoung
RBarryYoung

Reputation: 56755

Try it like this:

DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)

SET @SQL='
USE ['+@DbName+']'
EXEC (@SQL)

Or like this:

DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)

SET @SQL='
USE '+QUOTENAME(@DbName)
EXEC (@SQL)

Upvotes: 3

Pரதீப்
Pரதீப்

Reputation: 93754

You need to use Quotename to escape dot in database name

DECLARE @DbName NVARCHAR(200)='model54.18',@SQL NVARCHAR(MAX)

SET @SQL='USE '+quotename(@DbName)
print @sql
EXEC (@SQL)

Upvotes: 3

Related Questions