PDA

View Full Version : استفاده از نتیجه یک query در query دیگر



bahareee
سه شنبه 07 اسفند 1386, 11:00 صبح
من میخوام داده های یک جدول از یک database رو به جدولی مشابه در database دیگر insert کنم.



declare @t varchar(50)
set @t='use databasename2'
declare @v varchar(50)
set @v='select * from tblname2'
use databasename
insertinto tblname1 exec(@t+';'+@v)


اینطوری درست جواب میده اما وقتی به این صورت مینویسم


declare @t varchar(50)
set @t='use databasename2'
declare @v varchar(50)
set @v='select * from tblname2'
declare @a varchar(500)
set @a='use databasename1 '
declare @b varchar(50)
set @b='insert into tblname1 'exec(@t+;+@v)
exec(@a+' ; '+@b)


جواب نمیده .لطفآ منو راهنمایی کنید

MAsp.Net
سه شنبه 07 اسفند 1386, 11:06 صبح
سلام ، فکر می کنم روش ساده تری هم برای این کار وجود دارد . می توانید دستور را به صورت زیر بنویسید.



INSERT INTO databasename1.dbo.tablename1(Field list)
SELECT Field List FROM databasename2.dbo.tablename2
WHERE Condition(اگر شرطی وجود داشته باشه)

bahareee
سه شنبه 07 اسفند 1386, 12:27 عصر
سلام ، فکر می کنم روش ساده تری هم برای این کار وجود دارد . می توانید دستور را به صورت زیر بنویسید.



INSERT INTO databasename1.dbo.tablename1(Field list)
SELECT Field List FROM databasename2.dbo.tablename2
WHERE Condition(اگر شرطی وجود داشته باشه)


ممنون از راهنماییتون
ولی وقتی به این صورت مینویسم error میده


declare @q varchar(100)
set @q='insert into '+@databasename1+'.dbo.'+@tblname1+' select * from '+@databasename2+'.dbo.'+@tblname2
exec @q


error:
The name 'insert into databasename1.dbo.tblname1 select * from databasename2.dbo.tblname2' is not a valid identifier.

bahareee
سه شنبه 07 اسفند 1386, 15:09 عصر
کسی نیست به من کمک کنه؟؟؟؟

nasseritemp
سه شنبه 07 اسفند 1386, 16:35 عصر
راه حل MAsp.Net هیج مشکلی نداشت.
من Query زیر رو اجرا کردم و به خوبی پاسخ داد.


insert into pubs.dbo.Table1(id,name) select id,name from Northwind.dbo.Table1

h_baqery
سه شنبه 07 اسفند 1386, 17:07 عصر
عبارت جلوی exec باید داخل پرانتز باشد . یعنی :

exec (@Q)

bahareee
چهارشنبه 08 اسفند 1386, 09:02 صبح
از همه ممنونم مشکل نبود پرانتز بود...