This topic has been archived. It cannot be replied.
-
工作学习 / IT技术讨论 / SQL Server Stored procedure 问题? 请多帮忙我需要生成一个大表(Table),ClientID是唯一的。 大概有10000 rows 和 40 columns.
通过建立一个较复杂的SQL 语句,一次可以生成所有的行但不是所有的列 (大概30 列)。另外的10列只好通过ClientID 一个个取得。象这样的Stored Procedure 应该怎样实现?
我是一个新手, 没有很多经验在Stored procedure. 请DX给个可行的方法。
Thank you.
-prod4less(prod4less);
2005-3-4
{322}
(#2159071@0)
-
不知理解的对否,试试这个。“通过建立一个较复杂的SQL 语句,一次可以生成所有的行但不是所有的列 (大概30 列)。“
姑且把这个sql 叫做join_sql1,
“另外的10列只好通过ClientID 一个个取得“, 听起来像你只能用cursor, 没关系, 创建一个临时表, #table2。
create proc abc is
begin
cursor... populate #table2...
insert into final_table select table1.col1,table1.col2...table1.col20, table2.col21, table2.col22...table2.col30 from (join_sql1...) as table1, #table2 as table2
where table1.clientid=table2.clientid.
...
-whatwhenwherewhy(一生何求);
2005-3-4
{486}
(#2159491@0)
-
理解错了,这个不能用insert,应该是update。cursor也许要用,有时候也不一定,要看具体情况。
-guestagain(guest again);
2005-3-4
(#2159561@0)
-
INSERT 以前把所有含有这些id的行先删掉。行吗?
-aka(棒棒);
2005-3-5
(#2160679@0)
-
你再看看楼主的原贴。
-guestagain(guest again);
2005-3-5
(#2160700@0)
-
我的中文是越来越差了。你的问题,没看懂。
-bluebison(不是很牛);
2005-3-4
(#2159571@0)
-
我的问题是:在Stored Procedure,当一个 SQL语句不能得到目的表所有列的数据时,如何处理这些已经取出来的数据。是放在临时表? 还是可以象高级语言一样放在内存?等取得另外列数据后,一起插入到目的表。
-prod4less(prod4less);
2005-3-4
(#2159656@0)
-
一般来说,用临时表。
-guestagain(guest again);
2005-3-5
(#2159691@0)
-
如果是SQL2000可以用Table Variable
-hillxie(阳光、绿地、鸽子);
2005-3-5
(#2159747@0)
-
Table variable is a little more efficient than temp table, because variable won't cause disk io. But that's just for the data of small size.
-bluebison(不是很牛);
2005-3-5
(#2160363@0)
-
Thanks everybody. After I put data in the temp table. How can I do next?
I still need to get all data from temp table and combine other data together then insert into final table. Thanks,
-prod4less(prod4less);
2005-3-5
(#2160567@0)
-
首先,你所谓的final table是个什么东东?
-guestagain(guest again);
2005-3-5
(#2160578@0)
-
final table is the table which I will insert final data. It will combine all columns in temp table and few other columns for other tables.
-prod4less(prod4less);
2005-3-5
(#2160625@0)
-
这我知道,然后呢?你的问题问的不清楚。你的Stored procedure的目的是什么?是返回数据,还是insert data到数据库的某个table里面?
-guestagain(guest again);
2005-3-5
(#2160655@0)
-
I need to insert all data into a table
-prod4less(prod4less);
2005-3-5
(#2160883@0)
-
if you use temp table #test, you may use
1. select * into final_table from #test ( if your final_table doesn't exist)
or
2. insert into final_table select * from #test ( if the final_table already is there)
-yangn(Raymond);
2005-3-7
(#2163662@0)