Declare @.dbname varchar(30),
@.str varchar(500),
@.emailID varchar(50)
set @.EmailID='santosh@.yahoo.com'
set @.dbname='DB_kms_prv'
set @.str='SELECT empid, NTName, officialEmail, PreferredName FROM ' +
@.dbname + '.dbo.tblEmployee where officialEmail=' + @.emailID
exec (@.str)
I get error message
The column prefix 'santosh@.yahoo' does not match with a table name or
alias name used in the query.
How to get rid of it..?You need to put single quotes around the address:
set @.str='SELECT empid, NTName, officialEmail, PreferredName FROM ' +
@.dbname + '.dbo.tblEmployee where officialEmail=''' + @.emailID + ''''
If you get syntax errors from dynamic SQL, then just 'SELECT @.sql'
before executing it, so you can see what the statement looks like -
that makes the problem much clearer.
But don't use dynamic SQL at all unless it's absolutely necessary - see
here for all the reasons why to avoid it, and alternative solutions:
http://www.sommarskog.se/dynamic_sql.html
Specifically for your case, see "Getting data from another database" in
this section:
http://www.sommarskog.se/dynamic_sql.html#Dyn_Db
Simonsql
No comments:
Post a Comment