Monday, March 19, 2012
Dynamic Link server
create procedure xxxxxx @.ServerName as char(30) as
begin
if exists ( Select item from table1 join (select * from openquery (@.ServerName,'select column1 from table2 where column2=1')) as b on table1.item = b.column1 where qty > 0 )
begin
print 'IF Body'
end
end
Above code I giving error.
Msg 170, Level 15, State 1, Procedure xxxxxx, Line 3
Line 3: Incorrect syntax near '@.ServerName'.
can't we give dynamic server name in the OpenQuery? Is there any alternative method please suggest me
Thanks
Hi
Untested
SELECT * INTO #tbl from openquery (@.ServerName,'select column1 from table2 where column2=1')
IF EXISTS (SELECT * FROM table1 JOIN #tbl ON ........ WHERE......)
BEGIN
END
"RajeshA" <rajeshaz09@.hotmail.com> wrote in message news:AACB61B3-729D-4A2C-8ED5-A0C862CDDD9F@.microsoft.com...
I am receiving link server name as a parameter to my stored procedure. The code looks like
create procedure xxxxxx @.ServerName as char(30) as
begin
if exists ( Select item from table1 join (select * from openquery (@.ServerName,'select column1 from table2 where column2=1')) as b on table1.item = b.column1 where qty > 0 )
begin
print 'IF Body'
end
end
Above code I giving error.
Msg 170, Level 15, State 1, Procedure xxxxxx, Line 3
Line 3: Incorrect syntax near '@.ServerName'.
can't we give dynamic server name in the OpenQuery? Is there any alternative method please suggest me
Thanks
|||The problem here is, it is not accepting linked server name in the variable.
DECLARE @.Server as varchar(30)
SET @.Server = 'MyServer'
select * from openquery ( @.Server , 'select * from table1')
is not working.
select * from openquery ( MyServer , 'Select * from table1')
Is working fine.
Rajesh A
+91-9886124372
S7 Software Solutions
"NOTHING IS IMPOSSIBLE. IMPOSSIBLE IT SELF CONTAIN POSSIBLE."
"Uri Dimant" <urid@.iscar.co.il> wrote in message news:%23BWvov6dIHA.484@.TK2MSFTNGP06.phx.gbl...
Hi
Untested
SELECT * INTO #tbl from openquery (@.ServerName,'select column1 from table2 where column2=1')
IF EXISTS (SELECT * FROM table1 JOIN #tbl ON ........ WHERE......)
BEGIN
END
"RajeshA" <rajeshaz09@.hotmail.com> wrote in message news:AACB61B3-729D-4A2C-8ED5-A0C862CDDD9F@.microsoft.com...
I am receiving link server name as a parameter to my stored procedure. The code looks like
create procedure xxxxxx @.ServerName as char(30) as
begin
if exists ( Select item from table1 join (select * from openquery (@.ServerName,'select column1 from table2 where column2=1')) as b on table1.item = b.column1 where qty > 0 )
begin
print 'IF Body'
end
end
Above code I giving error.
Msg 170, Level 15, State 1, Procedure xxxxxx, Line 3
Line 3: Incorrect syntax near '@.ServerName'.
can't we give dynamic server name in the OpenQuery? Is there any alternative method please suggest me
Thanks
Wednesday, March 7, 2012
Dynamic database selection?
to another. Greatly simplified, it looks something like
create procedure import_widget as
begin
insert into our_widget (foo, bar)
select baz, quux from their_db.dbo.their_widget
end
go
The problem is that the name of the source database varies from
one system to another, so I want to pass the database name as a
parameter. I think I could do the following, but is there a
better way to go about it?
create procedure import_widget (@.db_name sysname) as
begin
exec 'create view their_widget as select * from '
+ @.db_name + '.dbo.their_widget'
insert into our_widget (foo, bar)
select baz, quux from their_widget
drop view their_widget
end
goEd Murphy (emurphy42@.socal.rr.com) writes:
Quote:
Originally Posted by
The problem is that the name of the source database varies from
one system to another, so I want to pass the database name as a
parameter. I think I could do the following, but is there a
better way to go about it?
On SQL 2005 you could use synonyms:
CREATE SYNONYM mytable AS thatdatabase.dbo.hertable
When you move to a new database you only need to update the synonyms.
--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pr...oads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodin...ions/books.mspx|||Erland Sommarskog wrote:
Quote:
Originally Posted by
Ed Murphy (emurphy42@.socal.rr.com) writes:
Quote:
Originally Posted by
>The problem is that the name of the source database varies from
>one system to another, so I want to pass the database name as a
>parameter. I think I could do the following, but is there a
>better way to go about it?
>
On SQL 2005 you could use synonyms:
>
CREATE SYNONYM mytable AS thatdatabase.dbo.hertable
>
When you move to a new database you only need to update the synonyms.
Alas, this is SQL 2000 (or at least I expect it will be in a
significant number of cases).|||Ed Murphy (emurphy42@.socal.rr.com) writes:
Quote:
Originally Posted by
Erland Sommarskog wrote:
>
Quote:
Originally Posted by
>Ed Murphy (emurphy42@.socal.rr.com) writes:
Quote:
Originally Posted by
>>The problem is that the name of the source database varies from
>>one system to another, so I want to pass the database name as a
>>parameter. I think I could do the following, but is there a
>>better way to go about it?
>>
>On SQL 2005 you could use synonyms:
>>
> CREATE SYNONYM mytable AS thatdatabase.dbo.hertable
>>
>When you move to a new database you only need to update the synonyms.
>
Alas, this is SQL 2000 (or at least I expect it will be in a
significant number of cases).
Then the best may be to have a stored procedure in the other database
to retreive that data. You still need to construct the procedure name
dynamically, but since EXEC accepts a variable for the procedure name,
you don't have to use dynamic SQL.
That is you can say:
SELECT @.sp_name = @.dbname + '..that_sp'
EXEC @.sp_name
--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pr...oads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodin...ions/books.mspx