Click here to Skip to main content
15,896,063 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Dear All,

I have two Database
1.ta
2.Theorem_Analytics_database.

Single Stored Procedure


Create procedure MultDB
as
select * from ta.dbo.user_master

declare @ScndDB varchar(100);
set @ScndDB ='[Theorem_Analytics_database].dbo.User_Master';
select * from @ScndDB


ERROR:Must declare the table variable "@ScndDB".

Please help me.

but if it is like below
Create procedure MultDB
as
select * from ta.dbo.user_master

declare @ScndDB varchar(100);
set @ScndDB ='[Theorem_Analytics_database].dbo.User_Master';
select @ScndDB

Execution Success.

it displays
all data of ta DB User_Master Table.
and
[Theorem_Analytics_database].dbo.User_Master
Posted

1 solution

You can't use a variable as the source of a table name in SQL: you would have to create a string containing the full SQL satement and then execute it:
SQL
SET @ScndDB ='[Theorem_Analytics_database].dbo.User_Master';
DECLARE @Command VARCHAR(MAX)
SET @Command='SELECT * FROM ' +@ScndDB
EXEC @Command
 
Share this answer
 
Comments
connect2manas 26-Jul-13 3:59am    
Hi,
Thanks for reply.
please help me.

Now my Procedure Becomes like below:

Alter procedure MultDB
as
select * from ta.dbo.user_master

declare @ScndDB varchar(100);
set @ScndDB ='[Theorem_Analytics_database].dbo.User_Master';

DECLARE @Command VARCHAR(MAX)
SET @Command='SELECT * FROM ' +@ScndDB
EXEC @Command


Command(s) completed successfully.

Exec MultDB;
First Table data displaying only.
for second error
OriginalGriff 26-Jul-13 4:09am    
:doh:
It's early - I forgot the brackets...

EXEC(@Command)
connect2manas 26-Jul-13 5:25am    
thanks ,its coming.
Sir if i want to get particular fields of @ScndDb Table,then what i have to do?
please reply me.
OriginalGriff 26-Jul-13 5:32am    
Replace the "*" with the list of field names.
connect2manas 26-Jul-13 5:45am    
Alter procedure MultDB
as
select * from ta.dbo.user_master

declare @ScndDB varchar(100);
declare @sql varchar(MAX);

set @ScndDB ='[Theorem_Analytics_database].dbo.User_Master';

SET @SQL='SELECT User_Email,First_Name,Last_Name FROM '+@ScndDB

EXEC (@SQL)



Now i want to store the User_Email,First_Name,Last_Name in different varible.
plz help me.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900